AWS CLI로 Amazon S3 다루기 - 2

AWS CLI로 Amazon S3 다루기 - 2

이전 포스팅에서 AWS CLI의 aws s3 커맨드를 사용하는 방법에 대해서 살펴보았습니다. 이번 포스팅에서는 aws s3api 커맨드를 통해서 Amazon S3를 좀 더 세밀하게 제어하는 방법에대해서 알아보도록 하겠습니다.

S3 버킷의 Region 확인

종종 본인이 생성한 S3 버킷이 속한 Region이 어디인지 햇갈릴 때가 있습니다. 이럴 때는 aws s3api get-bucket-location 커맨드를 통해서 Region을 알아낼 수 있습니다.

$ aws s3api get-bucket-location --bucket test-bucket
{
    "LocationConstraint": "us-west-2"
}

S3 버킷의 Life Cycle 설정

Amazon S3에 저장되어 있는 파일들의 생명 주기 관리를 위해서 관련 AWS CLI 커맨드를 사용할 수 있습니다. 예제에서는 test-bucket 버킷의 파일들이 한달 후에 자동으로 삭제되도록 설정해보겠습니다.

먼저 다음과 같이 aws s3api put-bucket-lifecycle 커맨드를 통해서 특정 버킷의 Life Cycle 설정을 생성할 수 있습니다.

$ aws s3api put-bucket-lifecycle --bucket test-bucket --lifecycle-configuration \\
  '{ "Rules": [ { "Expiration": { "Days": 30 }, "ID": "Retention", "Filter": { "Prefix": "" }, "Status": "Enabled" } ] }'

그리고 aws s3api get-bucket-lifecycle 커맨드를 통해서 특정 버킷의 Life Cycle 설정을 확인할 수 있습니다.

$ aws s3api get-bucket-lifecycle --bucket test-bucket
{
    "Rules": [
        {
            "Expiration": {
                "Days": 30
            },
            "ID": "Retention",
            "Filter": {
                "Prefix": ""
            },
            "Status": "Enabled"
        }
    ]
}

마지막으로 aws s3api delete-bucket-lifecycle 커맨드를 통해서 특정 버킷의 Life Cycle 설정을 삭제할 수 있습니다.

$ aws s3api delete-bucket-lifecycle --bucket test-bucket

aws s3 VS. aws s3api

aws s3 커맨드를 통해 Amazon S3를 파일 시스템처럼 접근할 수 있는 반면에 aws s3api 커맨드를 통해서는 좀 더 Restful API처럼 접근할 수 있습니다.

$ aws s3 ls s3://test-bucket/css/
2018-06-09 20:08:24     121200 bootstrap.min.css
2018-06-09 20:08:24     542194 bootstrap.min.css.map
2018-06-09 20:08:24        318 font.css
2018-06-09 20:08:24       8679 index.css
2018-06-09 20:08:24      42594 main.css
2018-06-09 20:08:24       9024 mapbox-gl.css
2018-06-09 20:08:24       1224 message.css
2018-06-09 20:08:24       9559 normalize.css
2018-06-09 20:08:24        848 ride.css
$ aws s3api list-objects --bucket test-bucket --prefix css
{
    "Contents": [
        {
            "Key": "css/bootstrap.min.css",
            "LastModified": "2018-06-10T03:08:24.000Z",
            "ETag": "\"ec3bb52a00e176a7181d454dffaea219\"",
            "Size": 121200,
            "StorageClass": "STANDARD",
            "Owner": {
                "DisplayName": "dale.seo",
                "ID": "51dbe4e62e5471da8ee52476412bc9ad187d2a1c196ec9f937b3da7be3a18c70"
            }
        },
        {
            "Key": "css/bootstrap.min.css.map",
            "LastModified": "2018-06-10T03:08:24.000Z",
            "ETag": "\"35b79ebe0b7805c1c84524ad920faa33\"",
            "Size": 542194,
            "StorageClass": "STANDARD",
            "Owner": {
                "DisplayName": "dale.seo",
                "ID": "51dbe4e62e5471da8ee52476412bc9ad187d2a1c196ec9f937b3da7be3a18c70"
            }
        },
        {
            "Key": "css/font.css",
            "LastModified": "2018-06-10T03:08:24.000Z",
            "ETag": "\"8af1a948ca8080e26ea87e2a9b01472c\"",
            "Size": 318,
            "StorageClass": "STANDARD",
            "Owner": {
                "DisplayName": "dale.seo",
                "ID": "51dbe4e62e5471da8ee52476412bc9ad187d2a1c196ec9f937b3da7be3a18c70"
            }
        },
        {
            "Key": "css/index.css",
            "LastModified": "2018-06-10T03:08:24.000Z",
            "ETag": "\"4615fa1d9569fe5cb4aa78592d32daac\"",
            "Size": 8679,
            "StorageClass": "STANDARD",
            "Owner": {
                "DisplayName": "dale.seo",
                "ID": "51dbe4e62e5471da8ee52476412bc9ad187d2a1c196ec9f937b3da7be3a18c70"
            }
        },
        {
            "Key": "css/main.css",
            "LastModified": "2018-06-10T03:08:24.000Z",
            "ETag": "\"676ee36bded4b97ff097304f3a266cd3\"",
            "Size": 42594,
            "StorageClass": "STANDARD",
            "Owner": {
                "DisplayName": "dale.seo",
                "ID": "51dbe4e62e5471da8ee52476412bc9ad187d2a1c196ec9f937b3da7be3a18c70"
            }
        },
        {
            "Key": "css/mapbox-gl.css",
            "LastModified": "2018-06-10T03:08:24.000Z",
            "ETag": "\"3d333a3427ff6dbb0cfe2fe93975b815\"",
            "Size": 9024,
            "StorageClass": "STANDARD",
            "Owner": {
                "DisplayName": "dale.seo",
                "ID": "51dbe4e62e5471da8ee52476412bc9ad187d2a1c196ec9f937b3da7be3a18c70"
            }
        },
        {
            "Key": "css/message.css",
            "LastModified": "2018-06-10T03:08:24.000Z",
            "ETag": "\"081952433a6eb6cd96a2b7a646524314\"",
            "Size": 1224,
            "StorageClass": "STANDARD",
            "Owner": {
                "DisplayName": "dale.seo",
                "ID": "51dbe4e62e5471da8ee52476412bc9ad187d2a1c196ec9f937b3da7be3a18c70"
            }
        },
        {
            "Key": "css/normalize.css",
            "LastModified": "2018-06-10T03:08:24.000Z",
            "ETag": "\"c2eaeff11a47fec97bc13343822deeb2\"",
            "Size": 9559,
            "StorageClass": "STANDARD",
            "Owner": {
                "DisplayName": "dale.seo",
                "ID": "51dbe4e62e5471da8ee52476412bc9ad187d2a1c196ec9f937b3da7be3a18c70"
            }
        },
        {
            "Key": "css/ride.css",
            "LastModified": "2018-06-10T03:08:24.000Z",
            "ETag": "\"52b2996442ef0e99c5d5bfae1227b3bc\"",
            "Size": 848,
            "StorageClass": "STANDARD",
            "Owner": {
                "DisplayName": "dale.seo",
                "ID": "51dbe4e62e5471da8ee52476412bc9ad187d2a1c196ec9f937b3da7be3a18c70"
            }
        }
    ]
}

이상으로 AWS CLI의 aws s3api를 사용하는 방법에 대해서 알아보았습니다.

This work is licensed under CC BY 4.0 CC BY

개발자를 위한 뉴스레터

달레가 정리한 AI 개발 트렌드와 직접 만든 콘텐츠를 전해드립니다.

Discord