

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 を使用して静的ウェブサイトを作成します。このプロセスでは、これらのサービスに共通な多くのタスクを扱います。このウォークスルーは、「[静的ウェブサイトをホスティングする](https://aws.amazon.com/getting-started/projects/host-static-website/)」の入門ガイドです。このガイドでは、[AWS マネジメントコンソール](https://console.aws.amazon.com/s3/home)を使用した同様なプロセスを説明しています。

ここで示すコマンドは、ユーザーの PowerShell セッションのデフォルトの認証情報とデフォルトのリージョンが設定済みであることを前提としています。したがって、認証情報とリージョンはコマンドレットの呼び出しには含まれません。

**注記**  
現時点では、バケットまたはオブジェクトの名前を変更する Amazon S3 API はないため、このタスクを実行する単一の Tools for Windows PowerShell コマンドレットはありません。S3 のオブジェクトの名前を変更するには、[Copy-S3Object](https://docs.aws.amazon.com/powershell/v4/reference/items/Copy-S3Object.html) コマンドレットを実行して、新しい名前でオブジェクトをコピーしてから、[Remove-S3Object](https://docs.aws.amazon.com/powershell/v4/reference/items/Remove-S3Object.html) コマンドレットを実行して元のオブジェクトを削除することをお勧めします。

**関連情報**
+  [で 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>

新しい Amazon S3 バケットを作成するには、`New-S3Bucket` コマンドレットを使用します。次の例では、`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` コマンドレットを使用します。

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

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

このチュートリアルを終了したら、次の行を使用してこのバケットを削除できます。このバケットは以降の例で使用するため、そのままにしておくことをお勧めします。

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

バケットの削除プロセスは完了するまでに時間がかかる場合があります。同じ名前のバケットをすぐに再作成しようとすると、古いバケットが完全に削除されるまで `New-S3Bucket` コマンドレットが失敗することがあります。

## 以下の資料も参照してください。
<a name="pstools-seealso-s3-bucket-create"></a>
+  [で AWS のサービスを操作する AWS Tools for PowerShell](pstools-using.md) 
+  [PUT Bucket (Amazon S3 サービスリファレンス)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUT.html) 
+  [AWS Amazon S3 の PowerShell リージョン Amazon S3](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) 

# Amazon S3 バケットをウェブサイトとして設定し、ログを有効にする
<a name="pstools-s3-create-website"></a>

`Write-S3BucketWebsite` コマンドレットを使用して、Amazon S3 バケットを静的ウェブサイトとして設定します。次の例では、デフォルトのコンテンツウェブページの `index.html` の名前とデフォルトのエラーウェブページの `error.html` の名前を指定します。このコマンドレットは、これらのページを作成しません。[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 Bucket website (Amazon S3 API リファレンス)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTwebsite.html) 
+  [PUT Bucket acl (Amazon S3 API リファレンス)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTacl.html) 

# オブジェクトの Amazon S3 バケットへのアップロード
<a name="pstools-s3-upload-object"></a>

`Write-S3Object` コマンドレットでは、ローカルファイルシステムのファイルをオブジェクトとして Amazon S3 バケットにアップロードします。以下の例では、2 つの簡単な 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
+ プライベート
+ public-read
+ public-read-write
+ aws-exec-read
+ authenticated-read
+ bucket-owner-read
+ bucket-owner-full-control
+ log-delivery-write

この既定 ACL 設定の詳細については、「[アクセスコントロールリスト (ACL) の概要](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl)」を参照してください。

## マルチパートアップロードに関する注意事項
<a name="note-regarding-multipart-upload"></a>

Amazon S3 API を使用して、5 GB よりも大きいファイルをアップロードする場合、マルチパートアップロードを使用する必要があります。ただし、Tools for Windows PowerShell が提供する `Write-S3Object` コマンドレットでは、5 GB よりも大きいファイルのアップロードを透過的に処理します。

### ウェブサイトをテストする
<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 バケットを削除します。

まず、Amazon S3 バケットから HTML ファイルのオブジェクトを削除するには、`Remove-S3Object` コマンドレットを実行します。

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

`False` レスポンスは、Amazon S3 のリクエスト処理で予期されるアーティファクトです。この場合、このレスポンスは問題を示しているわけではありません。

この時点で、`Remove-S3Bucket` コマンドレットを実行して、サイトの空になった 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    :
```

バージョン 1.1 以降の AWS Tools for PowerShell では、`-DeleteBucketContent` パラメータを `Remove-S3Bucket` に追加できます。このパラメータにより、指定したバケット内のすべてのオブジェクトとオブジェクトバージョンが削除された後でバケット自体が削除されます。バケット内のオブジェクトまたはオブジェクトのバージョンの数によっては、この操作にかなりの時間がかかることがあります。バージョン 1.1 より前の Tools for Windows PowerShell では、`Remove-S3Bucket` を使用してバケットを削除する前に、バケットを空にする必要がありました。

**注記**  
`-Force` パラメータを追加しない限り、コマンドレットが実行される前に AWS Tools for PowerShell により確認プロンプトが表示されます。

## 以下の資料も参照してください。
<a name="pstools-seealso-amazon-s3-delete-website"></a>
+  [で AWS のサービスを操作する AWS Tools for PowerShell](pstools-using.md) 
+  [DELETE オブジェクト (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` コマンドレットでは、インラインテキストコンテンツを Amazon S3 にアップロードする機能をサポートしています。`-Content` パラメータ (別名 `-Text`) を使用して、Amazon S3 にアップロードするテキストベースのコンテンツを指定することができます。この場合、事前にコンテンツをファイルに格納する必要はありません。このパラメーターでは、簡単な 1 行の文字列や、次のような複数の行が含まれている文字列が指定できます。

```
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
```