Amazon S3 버킷에 대한 액세스 권한을 Lambda 실행 역할에 허용하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 6월 11일

내 AWS Lambda 함수에서 Amazon Simple Storage Service(Amazon S3) 버킷에 액세스하고 싶습니다. 어떻게 해야 합니까?

간략한 설명

다음 단계를 따르십시오.

1.    S3 버킷에 대한 액세스 권한도 부여되는 Lambda 함수에 대한 AWS Identity and Access Management(IAM) 역할을 생성합니다.

2.    IAM 역할을 Lambda 함수의 실행 역할로 설정합니다.

3.    버킷 정책에서 Lambda 함수의 실행 역할에 액세스 권한을 부여하는지 확인합니다.

중요: Lambda 함수에 대해 생성한 IAM 역할이 버킷과 동일한 AWS 계정에 있는 경우 IAM 역할과 버킷 정책 모두에서 Amazon S3 권한을 부여하지 않아도 됩니다. 대신, IAM 역할에서 권한을 부여한 후 버킷 정책이 Lambda 함수 역할에 대한 액세스를 명시적으로 거부하지 않는지 확인할 수 있습니다. 예를 들어, 다음 절차는 IAM 역할에서 Amazon S3 권한을 부여합니다. IAM 역할 및 버킷이 다른 계정에 있는 경우 IAM 역할 및 버킷 정책 모두에서 Amazon S3 권한을 부여해야 합니다.

해결 방법

S3 버킷에 대한 액세스 권한도 부여하는 Lambda 함수에 대한 IAM 역할(생성 역할) 생성

1.    IAM 콘솔에서 Lambda 실행 역할을 생성하기 위한 단계를 따릅니다.

2.    IAM 역할 목록에서 방금 생성한 역할을 선택합니다.

3.    [권한] 탭에서 [인라인 정책 추가]를 선택합니다.

4.    [JSON] 탭을 선택합니다.

5.    S3 버킷에 대한 액세스 권한을 부여하는 정책을 입력합니다. 다음과 비슷한 정책을 사용할 수 있습니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}

6.    [Review policy]를 선택합니다.

7.    [이름]에 정책 이름을 입력합니다.

8.    정책 생성을 선택합니다.

IAM 역할을 Lambda 함수의 실행 역할로 설정

1.    Lambda 콘솔을 엽니다.

2.    Lambda 함수를 선택합니다.

3.    [실행 역할] 아래 [기존 역할]에서 생성한 IAM 역할을 선택합니다.

4.    [저장]을 선택합니다.

버킷 정책에서 Lambda 함수의 실행 역할에 액세스 권한을 부여하는지 확인

Lambda 함수의 실행 역할(IAM 역할)이 버킷과 동일한 AWS 계정에 있는 경우 버킷 정책이 Lambda 함수나 실행 역할에 대한 액세스를 명시적으로 거부하지 않는지 확인합니다. 버킷 정책이 액세스를 명시적으로 거부하지 않으면 Lambda 함수는 IAM 역할에서 부여된 권한으로 인해 버킷에 액세스할 수 있습니다.

Lambda 함수의 실행 역할과 버킷이 다른 계정에 속하는 경우 실행 역할에서 요청이 생성된 경우 버킷에 대한 액세스를 허용하는 버킷 정책을 추가해야 합니다. 이 교차 계정 액세스를 위해 IAM 정책 및 버킷 정책 모두에서 Amazon S3에 대한 권한을 실행 역할에 부여해야 합니다.

다음과 비슷한 버킷 정책을 사용할 수 있습니다.

{
  "Id": "ExamplePolicy",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
      ],
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"
        ]
      }
    }
  ]
}

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?