

AWS Tools for PowerShell V4가 유지 관리 모드로 전환되었습니다.

[AWS Tools for PowerShell V5](https://docs.aws.amazon.com/powershell/v5/userguide/)로 마이그레이션하는 것이 좋습니다. 마이그레이션 방법에 대한 자세한 내용과 정보는 [유지 관리 모드 공지](https://aws.amazon.com/blogs/developer/aws-tools-for-powershell-v4-maintenance-mode-announcement/)를 참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon S3 및 Tools for Windows PowerShell
<a name="pstools-s3"></a>

이 단원에서는 Amazon S3 및 CloudFront를 사용하여 AWS Tools for Windows PowerShell을(를) 사용하는 정적 웹 사이트를 만듭니다. 이 프로세스에서는 이러한 서비스를 이용한 일반적인 작업을 설명합니다. 이 시연은 [AWS관리 콘솔](https://console.aws.amazon.com/s3/home)을 사용한 유사한 프로세스를 설명하는 [정적 웹 사이트 호스팅](https://aws.amazon.com/getting-started/projects/host-static-website/)에 대한 시작 안내서를 모델링하고 있습니다.

여기에 표시된 명령은 PowerShell 세션의 기본 자격 증명 및 기본 리전을 설정했다고 가정합니다. 그러므로 자격 증명 리전이 cmdlet 호출에 포함되지 않습니다.

**참고**  
현재는 버킷이나 객체 이름을 변경하기 위한 Amazon S3 API가 없으므로 이 작업을 수행하기 위한 Tools for Windows PowerShell cmdlet도 없습니다. S3의 객체 이름을 변경하려면 [Copy-S3Object](https://docs.aws.amazon.com/powershell/v4/reference/items/Copy-S3Object.html) cmdlet을 실행하여 새 이름을 가진 객체로 객체를 복사한 후, [Remove-S3Object](https://docs.aws.amazon.com/powershell/v4/reference/items/Remove-S3Object.html) cmdlet을 실행하여 원래 객체를 삭제하는 것이 좋습니다.

**다음 사항도 참조하세요.**
+  [에서 AWS 서비스 작업 AWS Tools for PowerShell](pstools-using.md) 
+  [Amazon S3에서 정적 웹 사이트 호스팅](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html) 
+  [Amazon S3 콘솔](https://console.aws.amazon.com/s3/home) 

**Topics**
+ [Amazon S3 버킷 생성, 리전 확인 및 제거(선택 사항)](pstools-s3-bucket-create.md)
+ [Amazon S3 버킷을 웹 사이트로 구성하고 로깅 활성화](pstools-s3-create-website.md)
+ [Amazon S3 버킷에 객체 업로드](pstools-s3-upload-object.md)
+ [Amazon S3 객체 및 버킷 삭제](pstools-s3-delete-website.md)
+ [Amazon S3에 인라인 텍스트 콘텐츠 업로드](pstools-s3-upload-in-line-text.md)

# Amazon S3 버킷 생성, 리전 확인 및 제거(선택 사항)
<a name="pstools-s3-bucket-create"></a>

`New-S3Bucket` cmdlet을 사용하여 새 Amazon S3 버킷을 생성합니다. 다음 예제에서는 `website-example`이라는 버킷을 생성합니다. 버킷의 이름은 모든 리전에서 고유해야 합니다. 이 예제에서는 `us-west-1` 리전에 버킷을 생성합니다.

```
PS > New-S3Bucket -BucketName website-example -Region us-west-2

CreationDate         BucketName
------------         ----------
8/16/19 8:45:38 PM   website-example
```

`Get-S3BucketLocation` cmdlet을 사용하여 버킷이 위치한 리전을 확인할 수 있습니다.

```
PS > Get-S3BucketLocation -BucketName website-example

Value
-----
us-west-2
```

이 자습서를 마치면 다음 라인을 사용하여 이 버킷을 제거할 수 있습니다. 후속 예제에서 사용해야 하므로 이 버킷을 제 위치에 그대로 둘 것을 제안합니다.

```
PS > Remove-S3Bucket -BucketName website-example
```

버킷 제거 프로세스는 완료하는 데 다소 시간이 걸립니다. 동일한 이름의 버킷을 즉시 다시 생성하려고 하면 이전 버킷이 완전히 사라질 때까지 `New-S3Bucket` cmdlet이 실패할 수 있습니다.

## 참고
<a name="pstools-seealso-s3-bucket-create"></a>
+  [에서 AWS 서비스 작업 AWS Tools for PowerShell](pstools-using.md) 
+  [Put 버킷(Amazon S3 서비스 참조)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUT.html) 
+  [AWS Amazon S3용 PowerShell 리전](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) 

# Amazon S3 버킷을 웹 사이트로 구성하고 로깅 활성화
<a name="pstools-s3-create-website"></a>

`Write-S3BucketWebsite` cmdlet을 사용하여 Amazon S3 버킷을 정적 웹 사이트로 구성합니다. 다음 예제에서는 기본 콘텐츠 웹 페이지에 `index.html` 이름과 기본 오류 웹 페이지에 `error.html` 이름을 지정합니다. 이 cmdlet은 이러한 페이지를 만들지 않습니다. 이러한 페이지를 [Amazon S3 객체로서 업로드해야 합니다](pstools-s3-upload-object.md).

```
PS > Write-S3BucketWebsite -BucketName website-example -WebsiteConfiguration_IndexDocumentSuffix index.html -WebsiteConfiguration_ErrorDocument error.html
RequestId      : A1813E27995FFDDD
AmazonId2      : T7hlDOeLqA5Q2XfTe8j2q3SLoP3/5XwhUU3RyJBGHU/LnC+CIWLeGgP0MY24xAlI
ResponseStream :
Headers        : {x-amz-id-2, x-amz-request-id, Content-Length, Date...}
Metadata       : {}
ResponseXml    :
```

## 참고
<a name="pstools-seealso-s3-create-website"></a>
+  [에서 AWS 서비스 작업 AWS Tools for PowerShell](pstools-using.md) 
+  [Put 버킷 웹 사이트(Amazon S3 API 참조)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTwebsite.html) 
+  [Put 버킷 ACL(Amazon S3 API 참조)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTacl.html) 

# Amazon S3 버킷에 객체 업로드
<a name="pstools-s3-upload-object"></a>

로컬 파일 시스템의 파일을 Amazon S3 버킷에 객체로 업로드하려면 `Write-S3Object` cmdlet을 사용합니다. 아래 예제에서는 간단한 HTML 파일 두 개를 작성하여 Amazon S3 버킷에 업로드하고 업로드된 객체의 유무를 확인합니다. `-File`에 대한 `Write-S3Object` 파라미터는 로컬 파일 시스템의 파일 이름을 지정합니다. `-Key` 파라미터는 Amazon S3에서 해당 객체에 사용될 이름을 지정합니다.

Amazon은 파일 확장명에서 객체의 콘텐츠 유형(이 경우 ".html")을 유추합니다.

```
PS > # Create the two files using here-strings and the Set-Content cmdlet
PS > $index_html = @"
>> <html>
>>   <body>
>>     <p>
>>       Hello, World!
>>     </p>
>>   </body>
>> </html>
>> "@
>>
PS > $index_html | Set-Content index.html
PS > $error_html = @"
>> <html>
>>   <body>
>>     <p>
>>       This is an error page.
>>     </p>
>>   </body>
>> </html>
>> "@
>>
>>$error_html | Set-Content error.html
>># Upload the files to Amazon S3 using a foreach loop
>>foreach ($f in "index.html", "error.html") {
>> Write-S3Object -BucketName website-example -File $f -Key $f -CannedACLName public-read
>> }
>>
PS > # Verify that the files were uploaded
PS > Get-S3BucketWebsite -BucketName website-example

IndexDocumentSuffix                                         ErrorDocument
-------------------                                         -------------
index.html                                                  error.html
```

 *미리 준비된 ACL 옵션* 

Tools for Windows PowerShell을 사용하여 미리 준비된 ACL을 지정하는 값은 AWS SDK for .NET에서 사용되는 것과 동일합니다. 하지만 이러한 값은 Amazon S3 `Put Object` 작업에 사용되는 값과는 다릅니다. Tools for Windows PowerShell은 다음과 같은 미리 준비된 ACL을 지원합니다.
+ NoACL
+ private
+ public-read
+ public-read-write
+ aws-exec-read
+ authenticated-read
+ bucket-owner-read
+ bucket-owner-full-control
+ log-delivery-write

미리 준비된 ACL 설정에 대한 자세한 내용은 [액세스 제어 목록 개요](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl)를 참조하십시오.

## 멀티파트 업로드에 관한 정보
<a name="note-regarding-multipart-upload"></a>

Amazon S3 API를 사용하여 5GB보다 큰 파일을 업로드하는 경우 멀티파트 업로드를 사용해야 합니다. 하지만 Tools for Windows PowerShell에서 제공하는 `Write-S3Object` cmdlet은 5GB보다 큰 파일 업로드를 투명하게 처리할 수 있습니다.

### 웹 사이트 테스트
<a name="pstools-amazon-s3-test-website"></a>

이때 브라우저에서 탐색하여 웹 사이트를 테스트할 수 있습니다. Amazon S3에 호스팅된 정적 웹 사이트의 URL은 표준 형식을 따릅니다.

```
http://<bucket-name>.s3-website-<region>.amazonaws.com
```

예:

```
http://website-example.s3-website-us-west-1.amazonaws.com
```

### 참고
<a name="pstools-seealso-amazon-s3-test-website"></a>
+  [에서 AWS 서비스 작업 AWS Tools for PowerShell](pstools-using.md) 
+  [Put 객체(Amazon S3 API 참조)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) 
+  [미리 준비된 ACL(Amazon S3 API 참조)](https://docs.aws.amazon.com/AmazonS3/latest/dev/ACLOverview.html#CannedACL) 

# Amazon S3 객체 및 버킷 삭제
<a name="pstools-s3-delete-website"></a>

이 단원에서는 이전 단원에 생성된 웹 사이트를 삭제하는 방법을 설명합니다. HTML 파일에 대한 객체를 삭제하고 나서 이 사이트에 대한 Amazon S3 버킷을 삭제하면 됩니다.

먼저, `Remove-S3Object` cmdlet을 실행하여 Amazon S3 버킷에서 HTML 파일에 대한 객체를 삭제합니다.

```
PS > foreach ( $obj in "index.html", "error.html" ) {
>> Remove-S3Object -BucketName website-example -Key $obj
>> }
>> 
IsDeleteMarker
--------------
False
```

`False` 응답은 Amazon S3에서 요청을 처리하는 방법의 예상된 아티팩트입니다. 이 경우 이는 문제를 의미하지 않습니다.

이제 `Remove-S3Bucket` cmdlet을 실행해 사이트에서 현재 비어 있는 Amazon S3 버킷을 삭제할 수 있습니다.

```
PS > Remove-S3Bucket -BucketName website-example

RequestId      : E480ED92A2EC703D
AmazonId2      : k6tqaqC1nMkoeYwbuJXUx1/UDa49BJd6dfLN0Ls1mWYNPHjbc8/Nyvm6AGbWcc2P
ResponseStream :
Headers        : {x-amz-id-2, x-amz-request-id, Date, Server}
Metadata       : {}
ResponseXml    :
```

AWS Tools for PowerShell의 1.1 이상 버전에서는 `-DeleteBucketContent` 매개 변수를 `Remove-S3Bucket`에 추가할 수 있습니다. 그러면 지정된 버킷에서 모든 객체 및 객체 버전이 삭제되고 나서 버킷 자체가 제거됩니다. 버킷의 객체 또는 객체 버전 수에 따라 이 작업에는 상당한 시간이 걸릴 수도 있습니다. 1.1 이전 버전의 Tools for Windows PowerShell에서는 버킷을 비워야만 `Remove-S3Bucket`에서 버킷을 삭제할 수 있었습니다.

**참고**  
`-Force` 매개 변수를 추가하지 않는 한, cmdlet을 실행하기 전에 AWS Tools for PowerShell에서 확인 메시지가 표시됩니다.

## 참고
<a name="pstools-seealso-amazon-s3-delete-website"></a>
+  [에서 AWS 서비스 작업 AWS Tools for PowerShell](pstools-using.md) 
+  [객체 삭제(Amazon S3 API 참조)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html) 
+  [DeleteBucket(Amazon S3 API 참조)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketDELETE.html) 

# Amazon S3에 인라인 텍스트 콘텐츠 업로드
<a name="pstools-s3-upload-in-line-text"></a>

`Write-S3Object` cmdlet에서는 Amazon S3에 인라인 텍스트 콘텐츠를 업로드하는 기능을 지원합니다. `-Content` (별칭 `-Text`)를 사용하면 파일에 먼저 붙여 넣지 않고도 Amazon S3에 업로드할 텍스트 기반 내용을 지정할 수 있습니다. 이 파라미터에는 간단한 한 줄 문자열은 물론 여기에 나오는 여러 줄을 포함하는 문자열도 사용할 수 있습니다.

```
PS > # Specifying content in-line, single line text:
PS > write-s3object amzn-s3-demo-bucket -key myobject.txt -content "file content"

PS > # Specifying content in-line, multi-line text: (note final newline needed to end in-line here-string)
PS > write-s3object amzn-s3-demo-bucket -key myobject.txt -content @"
>> line 1
>> line 2
>> line 3
>> "@
>> 
PS > # Specifying content from a variable: (note final newline needed to end in-line here-string)
PS > $x = @"
>> line 1
>> line 2
>> line 3
>> "@
>> 
PS > write-s3object amzn-s3-demo-bucket -key myobject.txt -content $x
```