내용으로 건너뛰기

Lambda 함수가 내 Amazon S3 버킷에 액세스하도록 허용하려면 어떻게 해야 합니까?

3분 분량
0

AWS Lambda 함수가 Amazon Simple Storage Service(S3) 버킷에 액세스할 수 있도록 하고 싶습니다.

간략한 설명

Lambda 함수에 동일한 AWS 계정에 있는 S3 버킷에 대한 액세스 권한을 부여하려면 다음 단계를 완료하십시오.

  1. 버킷에도 액세스 권한을 부여할 수 있는 Lambda 함수용 AWS Identity and Access Management(IAM) 역할을 생성합니다.
  2. IAM 역할을 Lambda 함수 실행 역할로 구성합니다.
  3. 버킷 정책이 Lambda 함수나 실행 역할을 명시적으로 거부하지 않는지 확인합니다.

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

해결 방법

버킷에도 액세스할 수 있는 권한을 부여하는 Lambda 함수용 IAM 역할 생성

버킷에도 액세스할 수 있는 권한을 부여하는 Lambda 함수용 IAM 역할을 생성하려면 다음 단계를 따르십시오.

  1. IAM 콘솔에서 실행 역할을 생성합니다.

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

  3. 신뢰 관계 탭을 선택하고 신뢰 정책 편집을 선택합니다.

  4. 정책의 설명을 다음 설명으로 바꿉니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
         "Effect": "Allow",
         "Principal": {
         "Service": "lambda.amazonaws.com"
        },
      "Action": "sts:AssumeRole"
      }
     ]
    }
  5. 정책 업데이트를 선택합니다.

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

  7. JSON 탭을 선택합니다.

  8. 버킷에 액세스할 수 있는 권한을 부여하는 리소스 기반 IAM 정책을 추가합니다. 자세한 내용은 Lambda에서 리소스 기반 IAM 정책 보기를 참조하십시오. 다음 예제 IAM 정책은 Get 권한을 사용하여 특정 버킷에 대한 액세스 권한을 부여합니다. 버킷 내 객체에 액세스하려면 올바른 경로를 지정하거나 와일드카드 문자("*")를 사용합니다. 자세한 내용은 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"**을 버킷의 Amazon 리소스 이름(ARN)으로 바꾸십시오. AWS Key Management Service(AWS KMS) 키로 객체를 암호화한 경우 필요한 권한도 제공해야 합니다. 자세한 내용은 고객 관리형 AWS KMS 키로 암호화한 Amazon S3 버킷에서 사용자가 다운로드하고 업로드하도록 허용하려면 어떻게 해야 합니까?를 참조하십시오.

  9. 정책 검토를 선택합니다.

  10. 이름에 해당 정책 이름을 입력합니다.

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

IAM 역할을 Lambda 함수 실행 역할로 구성

IAM 역할을 Lambda 함수 실행 역할로 구성하려면 다음 단계를 따르십시오.

  1. Lambda 콘솔을 엽니다.
  2. 내 Lambda 함수를 선택합니다.
  3. 실행 역할 아래의 기존 역할에서 자신이 생성한 IAM 역할을 선택합니다.
  4. 저장을 선택합니다.

버킷 정책이 Lambda 함수나 실행 역할을 명시적으로 거부하지 않는지 확인

Amazon S3 콘솔을 사용하여 버킷 정책을 검토하십시오. 정책이 Lambda 함수 및 실행 역할에 대한 액세스를 허용하는지 확인합니다.

다음은 Lambda 실행 역할에 버킷에 대한 교차 계정 액세스 권한을 부여하는 IAM 정책의 예시입니다.

{
  "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"**을 ExampleLambdaRoleFor123456789012 버킷의 ARN으로 바꾸고 **"arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"**을 Lambda 실행 역할의 ARN으로 바꾸십시오.

관련 정보

AWS 정책 생성기