AWS Lambda 関数が Amazon Simple Storage Service (Amazon S3) バケットにアクセスできるようにしたい。
簡単な説明
Lambda 関数に同じ AWS アカウントの Amazon S3 バケットへのアクセスを許可するには、以下を実行します:
-
S3 バケットへのアクセスも許可する Lambda 関数用の AWS ID およびAccess管理 (IAM) ロールを作成します。
-
IAM ロールをLambda 関数実行ロールとして設定します。
-
S3 バケットポリシーが Lambda 関数やその実行ロールへのアクセスを明示的に拒否していないことを確認します。
**重要:**S3 バケットと関数の IAM ロールが異なるアカウントにある場合は、S3 バケットポリシーで必要な権限も付与する必要があります。詳細については、「Amazon S3 バケットにあるオブジェクトへのクロスアカウントアクセスを提供するにはどうすればよいですか?」を参照してください。
解像度
S3 バケットへのアクセスも許可する Lambda 関数の IAM ロールを作成します
-
IAM コンソールでの実行ロールの作成」の手順に従います。
-
IAM ロールのリストから、作成したばかりのロールを選択します。
-
信頼ポリシーでは、lambda.amazonaws.com を信頼できるサービスとして追加することで、Lambda が実行ロールを引き継ぐことができるようにする必要があります。[Trust relationsips] タブを選択し、[Edit trust policy] を選択して、ポリシーを次の内容に置き換えます:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
4.[Update policy] を選択します。
-
[Permissions] タブで、[Add inline plicy] を選択します。
-
JSON タブを選択します。
-
S3 バケットへのアクセスを許可するリソースベースの IAM ポリシーを入力します。詳細については、「AWS Lambda のリソースベースのポリシーの使用」を参照してください。
次の IAM ポリシーの例では、特定の Amazon S3 バケットへのアクセスをGet 権限で許可しています。Amazon S3 バケット内のオブジェクトにアクセスするには、必ず正しいパスを指定するか、ワイルドカード文字 (「\ *」) を使用してください。詳細については、「IAM ポリシーの作成」を参照してください: 詳細については、「Amazon S3 バケットへのアクセスを許可する方法」を参照してください。
重要:「arn: aws: s3::: EXAMPLE-BUCKET」 を S3 バケットの Amazon リソースネーム (ARN) に置き換えてください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::EXAMPLE-BUCKET/*"
]
}
]
}
-
「Review policy」を選択します。
-
[名前] に、ポリシーの名前を入力します。
-
[Create policy] を選択します。
IAM ロールを Lambda 関数実行ロールとして設定します
-
Lambda コンソールを開きます。
-
Lambda 関数を選択してください。
-
[Excution role] の [Existing role] で、作成した IAM ロールを選択します。
-
[Save] を選択します。
S3 バケットポリシーが Lambda 関数やその実行ロールへのアクセスを明示的に拒否していないことを確認します
S3 バケットポリシーを確認または編集するには、「Amazon S3コンソールを使用してバケットポリシーを追加する」の指示に従います。
**重要:**S3 バケットと関数の IAM ロールが異なるアカウントにある場合は、S3 バケットポリシーで必要な権限を明示的に付与する必要もあります。詳細については、「Amazon S3 バケットにあるオブジェクトへのクロスアカウントアクセスを提供するにはどうすればよいですか?」を参照してください。
次の IAM S3 バケットポリシーの例では、Lambda 実行ロールに S3 バケットへのクロスアカウントアクセスを許可しています。
重要:「arn: aws: s3::: EXAMPLE-BUCKET/\ 」* を S3 バケットの ARN に置き換えてください。「arn: aws: iam:: 123456789012: role/exampleLambdarOlefor 123456789012」** を Lambda 実行ロール ARN に置き換えてください。
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::EXAMPLE-BUCKET/*"
],
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"
]
}
}
]
}
関連情報
AWS ポリシージェネレーター