Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 Amazon Simple Storage Service(Amazon S3) 버킷에 액세스할 수 없습니다. EC2 인스턴스에서 S3 버킷에 대한 읽기/쓰기 액세스를 활성화하려면 어떻게 해야 하나요?
간략한 설명
EC2 인스턴스에서 S3 버킷에 연결하려면 다음을 실행해야 합니다.
1. Amazon S3에 대한 액세스 권한을 부여하는 AWS Identity and Access Management(IAM) 프로파일 역할을 생성합니다.
2. 인스턴스에 IAM 인스턴스 프로파일을 연결합니다.
3. S3 버킷에 대한 권한을 확인합니다.
4. EC2 인스턴스에서 Amazon S3로의 네트워크 연결을 확인합니다.
5. S3 버킷에 대한 액세스를 확인합니다.
해결 방법
Amazon S3에 대한 액세스 권한을 부여하는 IAM 인스턴스 프로파일 생성
1. IAM 콘솔을 엽니다.
2. 역할을 선택한 다음, 역할 생성을 선택합니다.
3. AWS 서비스를 선택한 다음 사용 사례에서 EC2를 선택합니다.
참고: 신뢰할 수 있는 엔터티로 선택한 EC2를 사용하여 콘솔에서 IAM 역할을 생성하면 역할 이름과 동일한 이름의 IAM 인스턴스 프로파일이 자동으로 생성됩니다. 하지만 AWS Command Line Interface(AWS CLI)를 사용하거나 API에서 역할을 생성한 경우에는 인스턴스 프로파일이 자동으로 생성되지 않습니다. 자세한 내용은 IAM 역할을 생성했지만, 인스턴스를 시작할 때 드롭다운 목록에 역할이 표시되지 않습니다. 어떻게 해야 합니까?를 참조하십시오.
4. 다음: 권한을 선택합니다.
5. S3 버킷에 액세스하는 데 필요한 최소 권한을 제공하는 사용자 지정 정책을 생성합니다. 사용자 지정 정책 생성에 대한 지침은 IAM 정책 작성: Amazon S3 버킷에 대한 액세스 권한 부여 방법 및 Amazon S3의 자격 증명 및 액세스 관리를 참조하세요.
참고: 필요한 최소 권한으로 정책을 생성하는 것이 보안을 위해 가장 좋습니다. 그러나 모든 Amazon S3 버킷에 대한 EC2 액세스를 허용하려면 AmazonS3ReadOnlyAccess 또는 AmazonS3FullAccess 관리형 IAM 정책을 사용합니다.
6. 다음: 태그를 선택한 후 다음: 검토를 선택합니다.
7. [역할 이름(Role name)]을 입력하고 [역할 생성(Create role)]을 선택합니다.
EC2 인스턴스에 IAM 인스턴스 프로파일 연결
1. Amazon EC2 콘솔을 엽니다.
2. 인스턴스를 선택합니다.
3. IAM 역할을 연결할 인스턴스를 선택합니다.
4. 작업 탭을 선택하고 보안을 선택한 다음 IAM 역할 수정을 선택합니다.
5. 방금 생성한 IAM 역할을 선택하고 [저장(Save)]을 선택합니다. IAM 역할이 EC2 인스턴스에 할당됩니다.
S3 버킷에 대한 권한 확인
1. Amazon S3 콘솔을 엽니다.
2. 정책을 확인할 S3 버킷을 선택합니다.
3. 권한을 선택합니다.
4. [Bucket Policy]를 선택합니다.
5. Effect: Deny가 포함된 문을 검색합니다.
6. 버킷 정책에서 버킷에 대한 IAM 인스턴스 프로파일 액세스를 거부하는 Effect: Deny 문을 편집하거나 제거합니다. 정책 편집에 대한 지침은 IAM 정책 편집을 참조하세요.
EC2 인스턴스에서 Amazon S3로의 네트워크 연결 확인
EC2 인스턴스를 S3 엔드포인트에 연결하려면 인스턴스가 다음 중 하나여야 합니다.
- 퍼블릭 IP 주소가 있고, 기본 경로가 인터넷 게이트웨이를 가리키는 라우팅 테이블 항목이 있는 EC2 인스턴스
- NAT 게이트웨이를 통한 기본 경로가 있는 프라이빗 EC2 인스턴스
- 게이트웨이 VPC 엔드포인트를 사용하여 Amazon S3에 연결된 프라이빗 EC2 인스턴스
프라이빗 EC2 인스턴스와 S3 버킷 간의 연결 문제를 해결하려면 게이트웨이 VPC 엔드포인트를 사용하여 S3 버킷에 연결할 수 없는 이유는 무엇입니까?를 참조하세요.
S3 버킷에 대한 액세스 확인
1. EC2 인스턴스에 AWS CLI를 설치합니다.
참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.
2. 다음 명령을 실행하여 S3 버킷에 대한 액세스를 확인합니다. DOC-EXAMPLE-BUCKET을 S3 버킷의 이름으로 바꿉니다.
aws s3 ls s3://DOC-EXAMPLE-BUCKET
참고: AWS Key Management Service(AWS KMS) 키로 암호화된 S3 객체는 다음에 대해 kms: Decrypt 권한이 부여되어야 합니다.
- 인스턴스에 연결된 IAM 역할.
- KMS 키 정책.
이러한 권한이 부여되지 않으면 S3 객체를 복사하거나 다운로드할 수 없습니다. 자세한 내용은 Amazon S3에서 KMS 암호화 객체를 다운로드할 때 AWS KMS 키를 지정해야 합니까?를 참조하십시오.
관련 정보
게이트웨이 VPC 엔드포인트를 사용하여 S3 버킷에 연결할 수 없는 이유는 무엇입니까?