ストレージの設定
Amplify CLIのstorageカテゴリを使用すると、クラウド接続ファイルおよびデータストレージを作成および管理できます。次の場合にstorageカテゴリを使用してください:
- アプリコンテンツ(画像、オーディオ、ビデオなど)をパブリック、保護、またはプライベートストレージバケットに保存する場合、または
- アプリデータをNoSQLデータベースに保存し、REST API + Lambdaでアクセスする場合
新しいストレージリソースの設定
次のコマンドを実行して、新しいストレージリソースを設定できます:
amplify add storageAmplifyを使用すると、Amazon S3を使用したアプリコンテンツストレージ(画像、オーディオ、ビデオなど)またはAmazon DynamoDBを使用したNoSQLデータベースを設定できます。
S3ストレージの追加
? Please select from one of the below mentioned services:> Content (Images, audio, video, etc.) NoSQL Database? Please provide a friendly name for your resource that will be used to label this category in the project:> mystorage? Please provide bucket name:> mybucketプロンプトに従って、コンテンツストレージのリソース名を入力します。
S3アクセス権限
次に、Amazon S3バケットのアクセス権限を設定します。authカテゴリをまだセットアップしていない場合は、Amplify CLIがauthカテゴリを有効にするためのワークフローをガイドします。
? Restrict access by?> Auth/Guest Users Individual Groups Both Learn moreAuth/ゲストユーザーアクセス
Auth/Guest Usersを選択して、個別ユーザーの認証ステータスに基づいて権限をスコープします。次の質問で、認証ユーザーのみがリソースにアクセスできるか、認証ユーザーとゲストユーザーがアクセスできるかを選択できます:
? Who should have access:❯ Auth users only Auth and guest users次に、認証ユーザー(および前に選択した場合は未認証ユーザー)のアクセススコープを設定するよう求められます。
? What kind of access do you want for Authenticated users?> ◉ create/update ◯ read ◯ delete? What kind of access do you want for Guest users? ◯ create/update> ◉ read ◯ delete認証ユーザーへのアクセス許可を付与すると、/public/、/protected/{cognito:sub}/、/private/{cognito:sub}/プレフィックスで始まるバケット内のオブジェクトに対して指定されたCRUD操作が許可されます。{cognito:sub}は、認証ユーザーのCognito IDの下位です。
ゲストユーザーへのアクセス許可を付与すると、/public/プレフィックスで始まるバケット内のオブジェクトに対して指定されたCRUD操作が許可されます。
個別グループアクセス
Individual Groupsを選択して、Cognito User Groupsに基づいてアクセス権限をスコープします
? Select groups: ◉ EMPLOYEE> ◉ MANAGER次に、選択した各Cognito User Groupに許可するCRUD操作を選択します
? What kind of access do you want for EMPLOYEE users? ◯ create/update> ◉ read ◯ delete? What kind of access do you want for MANAGER users? ◉ create/update ◯ read> ◉ delete注意:ここで選択されたCRUD操作は、特定のプレフィックスの下のオブジェクトだけでなく、バケット内のすべてのオブジェクトに適用されます。
注意:
Auth/Guest user accessとIndividual Group accessを組み合わせる場合、グループのメンバーであるユーザーには、認証ユーザー権限ではなく、グループの権限のみが付与されます。
S3 Lambdaトリガー
最後に、S3イベントに応答して実行できるLambda関数を設定するオプションがあります。
? Do you want to add a Lambda Trigger for your S3 Bucket? (y/N)このワークフローの詳細については、こちらをご覧ください。
完了です。コンテンツストレージが設定されました。ライブラリのストレージドキュメントにアクセスして、新しく作成されたS3バケットをアプリに統合してください。
NoSQLデータベースの追加
? Please select from one of the below mentioned services:> Content (Images, audio, video, etc.) NoSQL Database? Please provide a friendly name for your resource that will be used to label this category in the project:> dynamo2e1dc4eb? Please provide table name:> dynamo2e1dc4ebプロンプトに従って、NoSQLデータベースのリソース名を入力します。次に、テーブル作成ウィザードを実行します。最初に、テーブルの列を作成します:
You can now add columns to the table.
? What would you like to name this column: id? Please choose the data type: string? Would you like to add another column? Yes次に、インデックスを指定する必要があります。「インデックス」、「パーティションキー」、「ソートキー」、「グローバルセカンダリインデックス」の概念については、こちらで詳しく説明されています。
? Please choose partition key for the table: id? Do you want to add a sort key to your table? (y/N)? Do you want to add a Lambda Trigger for your Table? (y/N)テーブルのLambdaトリガーを設定したい場合は、オプションがあります。このワークフローの詳細については、こちらをご覧ください。
完了です。NoSQLデータベースが設定されました。