AWS

AWS CLI로 Amazon S3 다루기 - 2

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

S3 버킷의 Region 확인

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

1
2
3
4
$ 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 설정을 생성할 수 있습니다.

1
2
$ 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 설정을 확인할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ 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 설정을 삭제할 수 있습니다.

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

aws s3 VS. aws s3api

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

1
2
3
4
5
6
7
8
9
10
$ 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
$ 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를 사용하는 방법에 대해서 알아보았습니다.

공유하기