別の AWS アカウントにある Lambda 関数を呼び出すために Amazon S3 イベント通知を設定するにはどうすればよいですか?

最終更新日: 2021 年 6 月 8 日

Amazon Simple Storage Service (Amazon S3) バケットが別の AWS アカウントで AWS Lambda 関数を呼び出すようにしたいと考えています。設定する方法を教えてください。

簡単な説明

Amazon S3 バケットが別の AWS アカウントの Lambda 関数を呼び出すようにするには、次の手順を実行します。

1.    Lambda 関数のリソースベースのアクセス権限ポリシーを更新して、Amazon S3 の呼び出しアクセス許可を付与します

2.    Lambda 関数を呼び出す Amazon S3 イベント通知を作成します。

重要: Lambda 関数は Amazon S3 バケットと同じ AWS リージョンに存在する必要があります。関数の移行の詳細については、「Lambda コンソールを使用して Lambda 関数を別の AWS アカウントまたはリージョンに移行するにはどうすればよいですか?」を参照してください。

解決方法

注: この手順を実行するには、次の情報が必要です。

Lambda 関数のリソースベースのアクセス権限ポリシーを更新して、Amazon S3 の呼び出しアクセス許可を付与する

1.    Lambda 関数が存在する AWS アカウントを使用して、Lambda コンソールの [関数] ページを開きます。

2.    Amazon S3 から呼び出す Lambda 関数の名前を選択します。

3.    [設定] タブで、[アクセス権限] を選択します。

4.    [リソースベースのポリシー] ペインで、[アクセス権限を追加] を選択します。

5.    [ポリシーステートメント] ペインで、[AWS service] (AWS のサービス) を選択します。[サービス] ドロップダウンリストが表示されます。

6.    [サービス] ドロップダウンリストで、[S3] を選択します。テキストフィールドが表示されます。

7.    [ ソースアカウント ] に、Amazon S3 バケットをホストしているアカウントの AWS アカウント ID を入力します。

8.    [ソース ARN] に Amazon S3 バケットの ARN を入力します。以下の形式を使用します。

重要: bucket_name は実際の Amazon S3 バケットの名前に置き換えてください。

arn:aws:s3:::bucket_name

9.    [アクション] ドロップダウンリストから [lambda:InvokeFunction] を選択します。

10.    [ステートメント ID] に、ポリシー内で作成するステートメントを区別する一意のステートメント ID を入力します。

11.    [保存] を選択します。

注: 詳細については、「AWS Lambda のリソースベースのポリシーを使用する」を参照してください。

Lambda 関数を呼び出す Amazon S3 イベント通知を作成する

1.    「Amazon S3 コンソールを使用したイベント通知の有効化と設定」の手順に従います。

2.    「チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す」の「S3 トリガーでテストする」の手順に従って設定をテストします。関数がイベント通知によって呼び出されない場合は、「Why doesn't my Amazon S3 event notification invoke my Lambda function?」の手順に従ってください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?