IAM 설정을 통해 다른 계정과 S3를 공유 하는 방법에 대해 알아보자

2023.03.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

소개

안녕하세요! 클래스메소드 금상원 입니다. 이번 블로그에서는 S3를 다른 AWS계정과 공유 하는 방법에 대해 알아 보겠습니다.

S3 권한 설정「」

공유 하려는 S3 버킷의 콘솔화면에서「권한」을 클릭합니다.

권한 화면의 아래에「버킷 정책」에서「편집」을 클릭합니다.

아래의 JSON문을 입력한 후「변경 사항 저장」을 클릭합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "GetObject",
            "Action": [
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::bucketName/*",
            "Principal": {
                "AWS": [
                    "AWS-account"
                ]
            }
        },
        {
            "Sid": "ListBucket",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::bucketName",
            "Principal": {
                "AWS": [
                    "AWS-account"
                ]
            }
        }
    ]
}

첫번째 Statement는 S3에 보관된 파일을 다운로드 가능한 권한 입니다.
두번째 Statement는 S3에 보관된 파일리스트를 확인할 수 있는 권한 입니다.

"Resource": "arn:aws:s3:::bucketName/*"「bucketName」부분에 공유할 S3버킷 명을 입력합니다.
예) "arn:aws:s3:::bucketName/test-bucket" "AWS": ["AWS-account"]「AWS-account」부분에 공유할 상대방의 AWS ID를 입력 합니다.
예) "123456789012"

확인 해보기

CLI 명령어

S3를 공유할 어카운트의 CloudShell 에서 실행합니다.

aws s3 ls <bucket-name>/

위의 명령어로 공유받은 S3버킷 안에 존재하는 파일 리스트를 확인할 수 있습니다.

aws s3 cp s3://<bucket-name>/<file-name> s3://<bucket-name>

위의 명령어로 공유받은 S3 안에 존재하는 파일을 내려받거나 자신의 S3 안에 복사할 수 있습니다.
첫번째 S3 URL 에는 공유받은 S3의 S3 URL을 입력하고 두번째 S3 URL 에는 복사받을 S3의 S3 URL을 입력 합니다.

권한이 없을때

위의 사진처럼 권한이 없는 다른 AWS 계정에서 명령어를 입력했을 경우 에러가 발생하게 됩니다.

권한이 있을때

위의 사진처럼 권한이 있는 다른 AWS 계정에서 명령어를 입력했을 경우 조회, 복사가 가능합니다.

마무리

이번 블로그에서는 S3를 공유하여 다른 AWS 계정에서 조회하거나 자신의 S3내에 복사를 하는 방법에 대해 알아보았습니다.
평소에 S3를 공유 하는 방법에대해 궁금하셨던 분들에게 조금이나마 도움이 되었으면 좋겠습니다.

참고 자료

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !