Print
카테고리: [ Amazon Web Services ]
조회수: 7832

1. 버킷 생성

aws s3 mb s3://[버킷이름]

2. 버킷 제거

2-1. 비어있는 버킷 삭제

aws s3 rb s3://[버컷이름]

2-2. 비어있지 않은 버킷 삭제

aws s3 rb s3://[버컷이름] --force

3. 전송

3-1. 로컬에 있는 단일 파일을 S3로 전송

aws s3 cp [전송할파일명] s3://[버킷주소]/[전송될파일명]

결과

upload: [전송할파일명] to s3://[버킷주소]/[전송될파일명]

3-2. S3에 있는 단일 파일을 S3로 전송

aws s3 cp s3://[버킷주소]/[전송할파일명] s3://[버킷주소]/[전송될파일명]

결과

copy: s3://[버킷주소]/[전송할파일명] to s3://[버킷주소]/[전송될파일명]

4. 리스트 확인

4-1. aws s3 ls

$ aws s3 ls s3://[버킷주소]/[디렉토리]/
2018-01-03 15:39:13          0
2018-01-10 15:30:22   60487761 a14.dump
2018-01-10 15:30:04   21272956 a13.dump
2018-01-10 15:29:32   35076167 a12.dump
2018-01-10 15:28:50   88345506 a11.dump
2018-01-03 15:42:17    4849361 0101.dat
2018-01-03 15:43:17    6100948 0102.dat
2018-01-03 15:42:32    5460637 0103.dat

4-2. 각 객체 별 ACL 확인

4-2-1. 조회 조건

반드시 GetObjectAcl 권한을 가지고 있어야 확인 가능하다.

4-2-2. ACL 종류

참고 : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/acl-overview.html

권한 버킷에 대한 권한을 부여하는 경우 객체에 대한 권한을 부여하는 경우
READ 피부여자에게 버킷의 객체 목록 생성을 허용합니다 피부여자에게 객체 데이터와 그 메타데이터를 읽도록 허용합니다
WRITE 피부여자에게 버킷에 속한 객체의 생성, 덮어쓰기, 삭제를 허용합니다 해당 사항 없음
READ_ACP 피부여자에게 버킷 ACL 읽기를 허용합니다 피부여자에게 객체 ACL 읽기를 허용합니다
WRITE_ACP 피부여자에게 해당 버킷에 대한 ACL 쓰기를 허용합니다 피부여자에게 해당 객체에 대한 ACL 쓰기를 허용합니다
FULL_CONTROL 피부여자에게 버킷에 대한 WRITE, READ, READ_ACP, WRITE_ACP 권한을 허용합니다. 피부여자에게 객체에 대한 읽기, 쓰기, READ_ACP, WRITE_ACP 권한을 허용합니다

위 표에 따르면 FULL_CONTROL은 READ + WRITE + READ_ACP + WRITE_ACP 이다.

4-2-3. 일반 (FULL_CONTROL)

$ aws s3api get-object-acl --bucket [버킷주소] --key [디렉토리]/a11.dump
{
    "Owner": {
        "ID": "....."
    },
    "Grants": [
        {
            "Grantee": {
                "Type": "CanonicalUser",
                "ID": "....."
            },
            "Permission": "FULL_CONTROL"
        }
    ]
}

4-2-4. 일반 (ACL 조합)

$ aws s3api get-object-acl --bucket [버킷주소] --key [디렉토리]/a12.dump
{
    "Owner": {
        "ID": "....."
    },
    "Grants": [
        {
            "Grantee": {
                "Type": "CanonicalUser",
                "ID": "....."
            },
            "Permission": "READ"
        },
        {
            "Grantee": {
                "Type": "CanonicalUser",
                "ID": "....."
            },
            "Permission": "WRITE"
        },
        {
            "Grantee": {
                "Type": "CanonicalUser",
                "ID": "....."
            },
            "Permission": "READ_ACP"
        },
        {
            "Grantee": {
                "Type": "CanonicalUser",
                "ID": "....."
            },
            "Permission": "WRITE_ACP"
        }
    ]
}

어떤 경우는 FULL_CONTROL이고, 어떤 경우는 각 ACL이 나열되어 있는데 어떻게 해서 이렇게 차이가 발생한 것인지는 추가 확인 필요

4-2-5. 모든 사용자에게 read 오픈 된 상태

$ aws s3api get-object-acl --bucket [버킷주소] --key [디렉토리]/0101.dat
{
    "Owner": {
        "ID": "....."
    },
    "Grants": [
        {
            "Grantee": {
                "Type": "CanonicalUser",
                "ID": "....."
            },
            "Permission": "FULL_CONTROL"
        },
        {
            "Grantee": {
                "Type": "Group",
                "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
            },
            "Permission": "READ"
        }
    ]
}

5. CLI 설정

5-1. Configure

$ aws configure

AWS Access Key ID [None]: [전달받은 Access Key 입력]
AWS Secret Access Key [None]: [전달받은 Secret Access Key 입력]
Default region name [None]: [CLI 명령어 사용시 --region 옵션 없이 기본으로 선택할 Region ex) ap-northeast-2 등]
Default output format [None]: [CLI 명령어 사용시 --output 옵션 없이 기본으로 사용할 Output, ex) text 등]

5-2. Configuration 결과 확인 및 수정

$ ls ~/.aws
config    credentials
$ cat ~/.aws/credentials

[default]
aws_access_key_id=[1)에서 입력한 Access Key값]
aws_secret_access_key=[1)에서 입력한 Secret Access Key값]
[test]
aws_access_key_id=[Access Key 값]
aws_secret_access_key=[Secrest Access Key 값]
$ cat ~/.aws/config

[default]
region=ap-northeast-2
output=text
[profile test]
region=us-west-2
output=json

5-3. default & profile 사용

$ aws s3 ls s3://[bucket-name]
ap-northeast-2(서울)에 존재하는 S3 [bucket-name] bucket의 ls 결과가 text 형태로 출력
 
$ aws s3 ls s3://[bucket-name] --profile test
$ aws s3 ls s3://[bucket-name] --profile test --region eu-west-1 --output table

5-4. role 방식

특정 EC2에 pilicy - role이 부여되어 있다면 S3 억세스 가능하다.


6. 기타 옵션

6-1. dryrun

Displays the operations that would be performed using the specified command without actually running them.


7. 이슈

7-1. CLI 설치 불가

RHEL 5.X 서버에서 AWS CLI 설치 불가

7-2. 인코딩

On posix platforms, check the LC_CTYPE environment variable.
warning: Skipping file '[파일명]'. There was an error trying to decode the the file '[파일명]' in directory "[로컬디렉토리]".
Please check your locale settings.  The filename was decoded as: UTF-8

7-3. Access denied

특정 용량 이상이 되면 MultiPartUpload로 올려야 하는데 해당 권한이 없으면 문제 발생 (ListMultipartUploadParts)