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

최종 업데이트 날짜: 2021년 7월 20일

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

간략한 설명

Lambda 함수에 같은 AWS 계정에 있는 Amazon S3 버킷에 대한 액세스 권한을 부여하려면 다음 단계를 따릅니다.

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

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

3.    S3 버킷 정책이 Lambda 함수 또는 해당 실행 역할에 대한 액세스를 명시적으로 거부하지 않는지 확인합니다.

중요: S3 버킷과 함수의 IAM 역할이 서로 다른 계정에 있는 경우, S3 버킷 정책에서 필요한 권한도 부여해야 합니다. 자세한 내용은 Amazon S3 버킷에 있는 객체에 대한 교차 계정 액세스 권한을 제공하려면 어떻게 해야 합니까?를 참조하세요.

해결 방법

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

1.    IAM 콘솔에서 실행 역할 생성의 단계를 따릅니다.

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

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

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

5.    S3 버킷에 대한 액세스 권한을 부여하는 리소스 기반 IAM 정책을 입력합니다. 자세한 내용은 AWS Lambda에서 리소스 기반 정책 사용을 참조하세요.

특정 S3 버킷에 대한 액세스 권한을 부여하는 IAM 정책의 예

중요: "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"을 S3 버킷의 Amazon Resource Name(ARN)으로 바꿉니다.

{
  "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.    [저장]을 선택합니다.

S3 버킷 정책이 Lambda 함수 또는 해당 실행 역할에 대한 액세스를 명시적으로 거부하지 않는지 확인

S3 버킷 정책을 검토하거나 편집하려면 Amazon S3 콘솔을 사용한 버킷 정책 추가의 지침을 따르세요.

중요: S3 버킷과 함수의 IAM 역할이 서로 다른 계정에 있는 경우, S3 버킷 정책에서 필요한 권한도 명시적으로 부여해야 합니다. 자세한 내용은 Amazon S3 버킷에 있는 객체에 대한 교차 계정 액세스 권한을 제공하려면 어떻게 해야 합니까?를 참조하세요.

S3 버킷에 Lambda 실행 역할 교차 계정 액세스를 부여하는 IAM S3 버킷 정책의 예

중요: "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"을 S3 버킷의 ARN으로 바꿉니다. "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"는 Lambda 실행 역할의 ARN으로 바꿉니다.

{
  "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"
        ]
      }
    }
  ]
}

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?