AWS Lambda 함수가 Amazon Simple Storage Service(S3) 버킷에 액세스할 수 있도록 하고 싶습니다.
간략한 설명
같은 AWS 계정에 있는 Amazon S3 버킷 액세스 권한을 Lambda 함수에 부여하려면 다음 단계를 따르세요.
- S3 버킷에도 액세스를 부여할 수 있는 Lambda 함수용 AWS Identity and Access Management(IAM) 역할을 생성하세요.
- IAM 역할을 Lambda 함수 실행 역할로 구성
- S3 버킷 정책에서 Lambda 함수나 해당 실행 역할 액세스를 명시적으로 거부하지 않는지 확인하세요.
**중요:**S3 버킷과 함수 IAM 역할이 서로 다른 계정에 있다면 S3 버킷 정책에 필요한 권한도 부여해야 합니다. 자세한 내용은 Amazon S3 버킷에 있는 개체에 크로스 계정 액세스를 부여하려면 어떻게 해야 하나요?를 참고하세요.
해결 방법
S3 버킷에도 액세스할 수 있는 권한을 부여하는 Lambda 함수용 IAM 역할 생성
S3 버킷에도 액세스할 수 있는 권한을 부여하는 Lambda 함수용 IAM 역할을 생성하려면 다음 단계를 따르세요.
-
IAM 콘솔에서 실행 역할을 생성합니다.
-
IAM 역할 목록에서 생성한 역할을 선택합니다.
-
Lambda가 실행 역할을 맡을 수 있도록 허용하는 신뢰 정책을 설정하려면 lambda.amazonaws.com을 신뢰할 수 있는 서비스로 추가하세요. 신뢰 관계 탭을 선택하고 신뢰 정책 편집을 선택하세요.
-
정책 변수를 다음 변수로 바꾸세요.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
정책 업데이트를 선택합니다.
-
권한 탭에서 인라인 정책 추가를 선택하세요.
-
JSON 탭을 선택합니다.
-
S3 버킷에 액세스할 수 있는 권한을 부여하는 리소스 기반 IAM 정책을 입력하세요. 자세한 내용은 Lambda용 리소스 기반 정책 사용을 참고하세요. 다음은 Get 권한을 사용해 특정 Amazon S3 버킷에 액세스할 수 있는 권한을 부여하는 IAM 정책 예시입니다. Amazon S3 버킷 내 개체에 액세스하려면 올바른 경로를 지정하거나 와일드카드 문자("*")를 사용하세요. 자세한 내용은 IAM 정책: Amazon S3 버킷 액세스 권한을 부여하는 방법을 참고하세요.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::EXAMPLE-BUCKET/*"
]
}
]
}
참고: **"arn:aws:s3:::EXAMPLE-BUCKET"**을 내 S3 버킷 ARN으로 바꾸세요. AWS Key Management Service(AWS KMS) 키로 개체를 암호화한 경우 추가 권한을 제공해야 합니다. 자세한 내용은 내 Amazon S3 버킷의 기본 암호화가 사용자 지정 AWS KMS 키를 사용해 설정되어 있습니다. 사용자가 버킷에서 다운로드 및 업로드하도록 허용하려면 어떻게 해야 하나요?를 참고하세요.
-
정책 검토를 선택하세요.
-
이름에 내 정책 이름을 입력하세요.
-
정책 생성을 선택하세요.
IAM 역할을 Lambda 함수 실행 역할로 구성
IAM 역할을 Lambda 함수 실행 역할로 구성하려면 다음 단계를 따르세요.
- Lambda 콘솔을 여세요.
- 내 Lambda 함수를 선택하세요.
- 실행 역할 아래의 기존 역할에 생성한 IAM 역할을 선택하세요.
- 저장을 선택하세요.
S3 버킷 정책이 Lambda 함수나 실행 역할을 명시적으로 거부하지 않는지 확인
S3 버킷 정책을 검토하거나 편집하려면 Amazon S3 콘솔을 사용해 버킷 정책 추가에 안내된 지침을 따르세요.
다음은 Lambda 실행 역할에 S3 버킷에 대한 크로스 계정 액세스를 부여하는 IAM S3 버킷 정책의 예시입니다.
{
"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"
]
}
}
]
}
참고: **"arn:aws:s3:::EXAMPLE-BUCKET"**을 내 S3 버킷 ARN으로 바꾸고 **"arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"**을 내 Lambda 실행 역할 ARN으로 바꾸세요.
관련 정보
AWS 정책 생성기