

のバージョン 5 (V5) AWS Tools for PowerShell がリリースされました。

重要な変更とアプリケーションの移行については、[「移行トピック](https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html)」を参照してください。

 [https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html](https://docs.aws.amazon.com/powershell/v5/userguide/migrating-v5.html)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# での AWS サービスの呼び出し AWS Tools for PowerShell
<a name="pstools-using"></a>

このセクションでは、 AWS Tools for PowerShell を使用して AWS サービスにアクセスする例を示します。これらの例は、 コマンドレットを使用して実際の AWS タスクを実行する方法を示すのに役立ちます。これらの例は、Tools for PowerShell が提供するコマンドレットに依存しています。使用できるコマンドレットについては、「[AWS Tools for PowerShell コマンドレットリファレンス](https://docs.aws.amazon.com/powershell/v5/reference/)」を参照してください。

その他の AWS Tools for PowerShell 例については、「」の[コードの例](powershell_code_examples.md)章を参照してください。

## PowerShell ファイルの連結エンコード
<a name="powershell-file-concatenation-encoding"></a>

のいくつかのコマンドレットは、既存のファイルまたはレコード AWS Tools for PowerShell を編集します AWS。一例は `Edit-R53ResourceRecordSet` です。これは Amazon Route 53 の [ChangeResourceRecordSets](https://docs.aws.amazon.com/Route53/latest/APIReference/API_ChangeResourceRecordSets.html) API を呼び出します。

PowerShell 5.1 以前のリリースでファイルを編集または連結すると、PowerShell は UTF-8 ではなく UTF-16 で出力をエンコードします。これにより、不要な文字が追加されたり、有効でない結果が作成されたりする場合があります。16 進数エディタを使用すると、不要な文字を表示できます。

ファイル出力が UTF-16 に変換されないようにするには、次の例に示すように、PowerShell の `Out-File` コマンドレットにコマンドをパイプ処理し、UTF-8 エンコードを指定します。

```
PS > *some file concatenation command* | Out-File filename.txt -Encoding utf8
```

PowerShell コンソール内から AWS CLI コマンドを実行している場合は、同じ動作が適用されます。 AWS CLI コマンドの出力を PowerShell コンソールの `Out-File`にパイプできます。`Export-Csv` や `Export-Clixml` など、その他のコマンドレットにも `Encoding` パラメータがあります。`Encoding` パラメータを持つコマンドレット、および連結されたファイル出力のエンコードを修正できるコマンドレットの詳細なリストについては、次のコマンドを実行します。

```
PS > Get-Command -ParameterName "Encoding"
```

**注記**  
PowerShell Core を含む PowerShell 6.0 以降では、連結されたファイル出力の UTF-8 エンコードが自動的に保持されます。

## PowerShell ツールに対して返されるオブジェクト
<a name="returned-objects-for-the-powershell-tools"></a>

ネイティブ PowerShell 環境で AWS Tools for PowerShell より便利なように、 AWS Tools for PowerShell コマンドレットによって返されるオブジェクトは .NET オブジェクトであり、通常 AWS SDK の対応する API から返される JSON テキストオブジェクトではありません。例えば、`Get-S3Bucket` は、Amazon S3 JSON 応答オブジェクトではなく、`Buckets` コレクションを返します。`Buckets` コレクションは PowerShell パイプラインに配置し、適切な方法で操作できます。同様に、`Get-EC2Instance` は `DescribeEC2Instances` JSON 結果オブジェクトではなく、`Reservation` .NET オブジェクトコレクションを出力します。この動作は設計上行われ、 AWS Tools for PowerShell エクスペリエンスをイディオマティックな PowerShell とより一貫性を持たせることができます。

実際のサービス応答は、返されたオブジェクトの `note` プロパティとして保存され、必要であれば利用できます。`NextToken` フィールドを使用してページングをサポートする API アクションの場合、`note` プロパティとしても添付されます。

## [Amazon EC2](pstools-ec2.md)
<a name="using-ec2"></a>

このセクションでは、以下の方法を含む、Amazon EC2 インスタンスを起動するために必要な手順について説明します。
+ Amazon Machine Image (AMI) のリストを取得する
+ SSH 認証のキーペアを作成する
+ Amazon EC2 セキュリティグループを作成して設定する。
+ インスタンスの起動、インスタンスに関する情報を取得する

## [Amazon S3](pstools-s3.md)
<a name="using-s3"></a>

このセクションでは、Amazon S3 でホストされる静的ウェブサイトを作成するために必要な手順について説明します。以下の方法について説明します。
+ Amazon S3 バケットの作成と削除を行う
+ Amazon S3 バケットへのオブジェクトとしてファイルをアップロードする
+ Amazon S3 バケットからオブジェクトを削除する
+ Amazon S3 バケットをウェブサイトとして指定する

## [AWS Lambda および AWS Tools for PowerShell](pstools-lambda.md)
<a name="using-lambda"></a>

このセクションでは、 AWS Lambda Tools for PowerShell モジュールの概要と、モジュールのセットアップに必要な手順について説明します。

## [Amazon SNS と Amazon SQS](pstools-sqs-queue-sns-topic.md)
<a name="using-sns"></a>

このセクションでは、Amazon SQS キューを Amazon SNS トピックにサブスクライブするために必要なステップについて説明します。以下の方法について説明します。
+ Amazon SNS トピックを作成します。
+ Amazon SQS キューを作成します。
+ キューをトピックにサブスクライブする。
+ メッセージをトピックに送信する。
+ キューからメッセージを受信する。

## [CloudWatch](pstools-cw.md)
<a name="using-cw"></a>

このセクションでは、カスタムデータを CloudWatch に発行する方法を例を挙げて説明します。
+ カスタムメトリクスを CloudWatch ダッシュボードに発行する。

## 以下の資料も参照してください。
<a name="see-also"></a>
+  [の設定と使用 AWS Tools for PowerShell](pstools-getting-started.md) 

## トピック
<a name="w2aac13c23"></a>
+ [Amazon S3 と Tools for Windows PowerShell](pstools-s3.md)
+ [Amazon EC2 と Tools for Windows PowerShell](pstools-ec2.md)
+ [AWS Lambda および AWS Tools for PowerShell](pstools-lambda.md)
+ [Amazon SQS、Amazon SNS、および Tools for Windows PowerShell](pstools-sqs-queue-sns-topic.md)
+ [の CloudWatch AWS Tools for Windows PowerShell](pstools-cw.md)
+ [コマンドレットでの ClientConfig パラメータの使用](pstools-clientconfig.md)

# 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/v5/reference/items/Copy-S3Object.html) コマンドレットを実行して、新しい名前でオブジェクトをコピーしてから、[Remove-S3Object](https://docs.aws.amazon.com/powershell/v5/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
```

# Amazon EC2 と Tools for Windows PowerShell
<a name="pstools-ec2"></a>

を使用して、Amazon EC2 に関連する一般的なタスクを実行できます AWS Tools for PowerShell。

以下に示すコマンド例では、PowerShell セッションのデフォルトの認証情報とデフォルトのリージョンは設定済みであるとものとします。したがって、コマンドレットを呼び出す際に認証情報やリージョンは指定していません。詳細については、「[による認証 AWS](creds-idc.md)」および「[AWS リージョン](pstools-installing-specifying-region.md)」を参照してください。

**Topics**
+ [キーペアの作成](pstools-ec2-keypairs.md)
+ [セキュリティグループの作成](pstools-ec2-sg.md)
+ [AMI の検索](pstools-ec2-get-amis.md)
+ [インスタンスを起動する](pstools-ec2-launch.md)

# キーペアを作成する
<a name="pstools-ec2-keypairs"></a>

次の `New-EC2KeyPair` 例では、キーペアを作成し、PowerShell 変数 `$myPSKeyPair` に保存します。

```
PS > $myPSKeyPair = New-EC2KeyPair -KeyName myPSKeyPair
```

キーペアオブジェクトを `Get-Member` コマンドレットにパイプ処理すると、オブジェクトの構造が表示されます。

```
PS > $myPSKeyPair | Get-Member

     TypeName: Amazon.EC2.Model.KeyPair

  Name                MemberType   Definition
  ----                ----------   ----------
  Equals              Method       bool Equals(System.Object obj)
  GetHashCode         Method       int GetHashCode()
  GetType             Method       type GetType()
  ToString            Method       string ToString()
  KeyFingerprint      Property     System.String KeyFingerprint {get;set;}
  KeyMaterial         Property     System.String KeyMaterial {get;set;}
  KeyName             Property     System.String KeyName {get;set;}
```

キーペアオブジェクトを `Format-List` コマンドレットにパイプ処理すると、`KeyName`、`KeyFingerprint`、および `KeyMaterial` の各メンバーの値が表示されます (出力は読みやすくするために切り詰められます)。

```
PS > $myPSKeyPair | Format-List KeyName, KeyFingerprint, KeyMaterial

  KeyName        : myPSKeyPair
  KeyFingerprint : 09:06:70:8e:26:b6:e7:ef:8f:fe:4a:1d:bc:9c:6a:63:11:ac:ad:3c
  KeyMaterial    : ----BEGIN RSA PRIVATE KEY----
                   MIIEogIBAAKCAQEAkK+ANYUS9c7niNjYfaCn6KYj/D0I6djnFoQE...
                   Mz6btoxPcE7EMeH1wySUp8nouAS9xbl9l7+VkD74bN9KmNcPa/Mu...
                   Zyn4vVe0Q5il/MpkrRogHqOB0rigeTeV5Yc3lvO0RFFPu0Kz4kcm...
                   w3Jg8dKsWn0plOpX7V3sRC02KgJIbejQUvBFGi5OQK9bm4tXBIeC...
                   daxKIAQMtDUdmBDrhR1/YMv8itFe5DiLLbq7Ga+FDcS85NstBa3h...
                   iuskGkcvgWkcFQkLmRHRoDpPb+OdFsZtjHZDpMVFmA9tT8EdbkEF...
                   3SrNeqZPsxJJIxOodb3CxLJpg75JU5kyWnb0+sDNVHoJiZCULCr0...
                   GGlLfEgB95KjGIk7zEv2Q7K6s+DHclrDeMZWa7KFNRZuCuX7jssC...
                   xO98abxMr3o3TNU6p1ZYRJEQ0oJr0W+kc+/8SWb8NIwfLtwhmJEy...
                   1BX9X8WFX/A8VLHrT1elrKmLkNECgYEAwltkV1pOJAFhz9p7ZFEv...
                   vvVsPaF0Ev9bk9pqhx269PB5Ox2KokwCagDMMaYvasWobuLmNu/1...
                   lmwRx7KTeQ7W1J3OLgxHA1QNMkip9c4Tb3q9vVc3t/fPf8vwfJ8C...
                   63g6N6rk2FkHZX1E62BgbewUd3eZOS05Ip4VUdvtGcuc8/qa+e5C...
                   KXgyt9nl64pMv+VaXfXkZhdLAdY0Khc9TGB9++VMSG5TrD15YJId...
                   gYALEI7m1jJKpHWAEs0hiemw5VmKyIZpzGstSJsFStERlAjiETDH...
                   YAtnI4J8dRyP9I7BOVOn3wNfIjk85gi1/0Oc+j8S65giLAfndWGR...
                   9R9wIkm5BMUcSRRcDy0yuwKBgEbkOnGGSD0ah4HkvrUkepIbUDTD...
                   AnEBM1cXI5UT7BfKInpUihZi59QhgdK/hkOSmWhlZGWikJ5VizBf...
                   drkBr/vTKVRMTi3lVFB7KkIV1xJxC5E/BZ+YdZEpWoCZAoGAC/Cd...
                   TTld5N6opgOXAcQJwzqoGa9ZMwc5Q9f4bfRc67emkw0ZAAwSsvWR...
                   x3O2duuy7/smTwWwskEWRK5IrUxoMv/VVYaqdzcOajwieNrblr7c...
                   -----END RSA PRIVATE KEY-----
```

`KeyMaterial` メンバーにはキーペアのプライベートキーが保存されます。パブリックキーは に保存されます AWS。からパブリックキーを取得することはできませんが AWS、プライベートキーの をパブリックキー`KeyFingerprint`の から返された と比較することで AWS 、パブリックキーを検証できます。

## キーペアのフィンガープリントの表示
<a name="get-ec2keypair"></a>

`Get-EC2KeyPair` コマンドレットを使用して、キーペアのフィンガープリントを表示できます。

```
PS > Get-EC2KeyPair -KeyName myPSKeyPair | format-list KeyName, KeyFingerprint

  KeyName        : myPSKeyPair
  KeyFingerprint : 09:06:70:8e:26:b6:e7:ef:8f:fe:4a:1d:bc:9c:6a:63:11:ac:ad:3c
```

## プライベートキーの保存
<a name="store-ec2keypair"></a>

ファイルにプライベートキーを保存するには、`KeyFingerMaterial` メンバーを `Out-File` コマンドレットにパイプ処理します。

```
PS > $myPSKeyPair.KeyMaterial | Out-File -Encoding ascii myPSKeyPair.pem
```

プライベートキーをファイルに書き込む際には、`-Encoding ascii` を指定する必要があります。指定しない場合、`openssl` などのツールがファイルを正しく読み取ることができなくなる可能性があります。作成したファイルの形式が正しいことを確認するには、次のようなコマンドを使用します。

```
PS > openssl rsa -check < myPSKeyPair.pem
```

（`openssl`ツールは AWS Tools for PowerShell または には含まれていません） AWS SDK for .NET。

## キーペアの削除
<a name="remove-ec2keypair"></a>

インスタンスを起動して接続するにはキーペアが必要です。キーペアを使用し終わったら、削除できます。パブリックキーを削除するには AWS、 `Remove-EC2KeyPair` コマンドレットを使用します。プロンプトが表示されたら、`Enter` キーを押して、キーペアを削除します。

```
PS > Remove-EC2KeyPair -KeyName myPSKeyPair

Confirm
Performing the operation "Remove-EC2KeyPair (DeleteKeyPair)" on target "myPSKeyPair".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):
```

現行の PowerShell セッションにはまだ `$myPSKeyPair` 変数が存在しており、キーペア情報が含まれています。また、`myPSKeyPair.pem` ファイルも存在します。ただし、キーペアのパブリックキーが AWSに保存されていないため、プライベートキーは使用できません。

# Windows PowerShell を使用したセキュリティグループの作成
<a name="pstools-ec2-sg"></a>

を使用して AWS Tools for PowerShell 、セキュリティグループを作成および設定できます。応答はセキュリティグループの ID です。

インスタンスに接続する必要がある場合、SSH トラフィック (Linux) または RDP トラフィック (Windows) を許可するようにセキュリティグループを設定する必要があります。

**Topics**
+ [前提条件](#sg-prerequisites)
+ [EC2-VPC 用セキュリティグループの作成](#new-ec2securitygroup-vpc)

## 前提条件
<a name="sg-prerequisites"></a>

コンピュータの CIDR 表記のパブリック IP アドレスが必要です。サービスを使用して、ローカルコンピュータのパブリック IP アドレスを取得できます。たとえば、Amazon では、[http://checkip.amazonaws.com/](http://checkip.amazonaws.com/) または [https://checkip.amazonaws.com/](https://checkip.amazonaws.com/) のサービスを提供しています。IP アドレスを提供する別のサービスを検索するには、検索フレーズ「what is my IP address」を使用します。ISP 経由で、またはファイアウォールの内側から静的な IP アドレスなしで接続している場合は、クライアントコンピュータで使用できる IP アドレスの範囲を見つける必要があります。

**警告**  
`0.0.0.0/0` を指定すると、世界中の任意の IP アドレスからのトラフィックが有効になります。SSH と RDP プロトコルの場合、これはテスト環境で短時間なら許容できますが、実稼働環境で行うのは安全ではありません。実稼働環境では、適切な個別の IP アドレスまたはアドレス範囲からのアクセスのみを許可するようにしてください。

## EC2-VPC 用セキュリティグループの作成
<a name="new-ec2securitygroup-vpc"></a>

**警告**  
EC2-Classic は 2022 年 8 月 15 日に廃止されました。EC2-Classic は、VPC への移行をお勧めします。詳細については、ブログ記事[EC2-Classic Networking is Retiring – Here's How to Prepare](https://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/)」を参照してください。

次の `New-EC2SecurityGroup` 例では、指定された VPC のセキュリティグループを作成するために `-VpcId` パラメータを追加します。

```
PS > $groupid = New-EC2SecurityGroup `
    -VpcId "vpc-da0013b3" `
    -GroupName "myPSSecurityGroup" `
    -GroupDescription "EC2-VPC from PowerShell"
```

セキュリティグループの初期設定を表示するには、`Get-EC2SecurityGroup` コマンドレットを使用します。デフォルトでは、VPC 用のセキュリティグループにはすべてのアウトバウンドトラフィックを許可するルールが含まれています。EC2-VPC 用セキュリティグループは名前では参照できないことに注意してください。

```
PS > Get-EC2SecurityGroup -GroupId sg-5d293231

OwnerId             : 123456789012
GroupName           : myPSSecurityGroup
GroupId             : sg-5d293231
Description         : EC2-VPC from PowerShell
IpPermissions       : {}
IpPermissionsEgress : {Amazon.EC2.Model.IpPermission}
VpcId               : vpc-da0013b3
Tags                : {}
```

TCP ポート 22 (SSH) および TCP ポート 3389 のインバウンドトラフィックのアクセス許可を定義するには、`New-Object` コマンドレットを使用します。次のスクリプト例では、単一の IP アドレス、`203.0.113.25/32` から TCP ポート 22 および 3389 のアクセス許可を定義します。

```
$ip1 = new-object Amazon.EC2.Model.IpPermission 
$ip1.IpProtocol = "tcp" 
$ip1.FromPort = 22 
$ip1.ToPort = 22 
$ip1.IpRanges.Add("203.0.113.25/32") 
$ip2 = new-object Amazon.EC2.Model.IpPermission 
$ip2.IpProtocol = "tcp" 
$ip2.FromPort = 3389 
$ip2.ToPort = 3389 
$ip2.IpRanges.Add("203.0.113.25/32") 
Grant-EC2SecurityGroupIngress -GroupId $groupid -IpPermissions @( $ip1, $ip2 )
```

セキュリティグループが更新されているかどうかを確認するには、再度、`Get-EC2SecurityGroup` コマンドレットを使用します。

```
PS > Get-EC2SecurityGroup -GroupIds sg-5d293231

OwnerId             : 123456789012
GroupName           : myPSSecurityGroup
GroupId             : sg-5d293231
Description         : EC2-VPC from PowerShell
IpPermissions       : {Amazon.EC2.Model.IpPermission}
IpPermissionsEgress : {Amazon.EC2.Model.IpPermission}
VpcId               : vpc-da0013b3
Tags                : {}
```

インバウンドルールを表示するには、前のコマンドで返されたコレクションオブジェクトから `IpPermissions` プロパティを取得します。

```
PS > (Get-EC2SecurityGroup -GroupIds sg-5d293231).IpPermissions

IpProtocol       : tcp
FromPort         : 22
ToPort           : 22
UserIdGroupPairs : {}
IpRanges         : {203.0.113.25/32}

IpProtocol       : tcp
FromPort         : 3389
ToPort           : 3389
UserIdGroupPairs : {}
IpRanges         : {203.0.113.25/32}
```

# Windows PowerShell を使用した Amazon Machine Image の検索
<a name="pstools-ec2-get-amis"></a>

Amazon EC2 インスタンスを起動する際には、インスタンスのテンプレートとなる Amazon Machine Image (AMI) を指定します。ただし、 は最新の更新とセキュリティ強化を備えた新しい AMIs AWS を提供するため、 AWS Windows AMIs の IDs は頻繁に変更されます。[Get-EC2Image](https://docs.aws.amazon.com/powershell/v5/reference/items/Get-EC2Image.html) コマンドレットを使用して、現在の Windows AMIsし、その IDs を取得できます。

## Get-EC2Image
<a name="pstools-ec2-get-image"></a>

`Get-EC2Image` コマンドレットは、使用できる AMI のリストを取得します。

`-Owner` パラメータに配列値 `amazon, self` を指定して、`Get-EC2Image` が、Amazon またはユーザー自身に属する AMI のみを取得するようにします。このコンテキストでは、*ユーザー* とは、コマンドレットの呼び出しに使用した認証情報を持つユーザーを指します。

```
PS > Get-EC2Image -Owner amazon, self
```

`-Filter` パラメータを使用して結果を絞り込むことができます。フィルタを指定するには、`Amazon.EC2.Model.Filter` 型のオブジェクトを作成します。たとえば、次のフィルタを使用すると、Windows AMI のみが表示されます

```
$platform_values = New-Object 'collections.generic.list[string]'
$platform_values.add("windows")
$filter_platform = New-Object Amazon.EC2.Model.Filter -Property @{Name = "platform"; Values = $platform_values}
Get-EC2Image -Owner amazon, self -Filter $filter_platform
```

次の例は、コマンドレットによって返される AMI の 1 つです。上記のコマンドの実際の出力では、多くの AMI の情報が提供されます。

```
Architecture        : x86_64
BlockDeviceMappings : {/dev/sda1, xvdca, xvdcb, xvdcc…}
CreationDate        : 2019-06-12T10:41:31.000Z
Description         : Microsoft Windows Server 2019 Full Locale English with SQL Web 2017 AMI provided by Amazon
EnaSupport          : True
Hypervisor          : xen
ImageId             : ami-000226b77608d973b
ImageLocation       : amazon/Windows_Server-2019-English-Full-SQL_2017_Web-2019.06.12
ImageOwnerAlias     : amazon
ImageType           : machine
KernelId            : 
Name                : Windows_Server-2019-English-Full-SQL_2017_Web-2019.06.12
OwnerId             : 801119661308
Platform            : Windows
ProductCodes        : {}
Public              : True
RamdiskId           : 
RootDeviceName      : /dev/sda1
RootDeviceType      : ebs
SriovNetSupport     : simple
State               : available
StateReason         : 
Tags                : {}
VirtualizationType  : hvm
```

**注記**  
のバージョン 4 では、AMI `Get-EC2ImageByName` のリストを名前パターンでフィルタリングするための コマンドレット AWS Tools for PowerShell が提供されAMIs。ツールのバージョン 5 では、代わりに [Get-SSMLatestEC2Image](https://docs.aws.amazon.com/powershell/v5/reference/items/Get-SSMLatestEC2Image.html) コマンドレットを使用します。

# Windows PowerShell を使用した Amazon EC2 インスタンスの起動
<a name="pstools-ec2-launch"></a>

Amazon EC2 インスタンスの起動には、前のセクションで作成したキーペアとセキュリティグループが必要です。また、Amazon Machine Image (AMI) の ID も必要です。詳細については、次のドキュメントを参照してください。
+  [キーペアを作成する](pstools-ec2-keypairs.md) 
+  [Windows PowerShell を使用したセキュリティグループの作成](pstools-ec2-sg.md) 
+  [Windows PowerShell を使用した Amazon Machine Image の検索](pstools-ec2-get-amis.md) 

**重要**  
無料利用枠に含まれないインスタンスを起動する場合は、インスタンスを起動すると料金が発生し、そのインスタンスの実行中はアイドル状態であっても料金がかかります。

**Topics**
+ [VPC でのインスタンスの起動](#new-ec2instance-vpc)
+ [VPC でのスポットインスタンスの起動](#new-ec2instance-spot)

## VPC でのインスタンスの起動
<a name="new-ec2instance-vpc"></a>

**警告**  
EC2-Classic は 2022 年 8 月 15 日に廃止されました。EC2-Classic は、VPC への移行をお勧めします。詳細については、ブログ記事[EC2-Classic Networking is Retiring – Here's How to Prepare](https://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/)」を参照してください。

次のコマンドでは、指定したプライベートサブネットで、単一の `m1.small` インスタンスを作成しています。セキュリティグループは、指定したサブネットに対して有効である必要があります。

```
PS > New-EC2Instance `
    -ImageId ami-c49c0dac `
    -MinCount 1 -MaxCount 1 `
    -KeyName myPSKeyPair `
    -SecurityGroupId sg-5d293231 `
    -InstanceType m1.small `
    -SubnetId subnet-d60013bf

ReservationId   : r-b70a0ef1
OwnerId         : 123456789012
RequesterId     :
Groups          : {}
GroupName       : {}
Instances       : {}
```

最初、インスタンスは `pending` 状態ですが、数分後には `running` 状態になります。インスタンスに関する情報を表示するには、`Get-EC2Instance` コマンドレットを使用します。複数のインスタンスがある場合は、`Filter` パラメータを使用して予約 ID の結果をフィルタします。まず、`Amazon.EC2.Model.Filter` 型のオブジェクトを作成します。次に、フィルターを使用する `Get-EC2Instance` を呼び出し、`Instances` プロパティを表示します。

```
PS > $reservation = New-Object 'collections.generic.list[string]'
PS > $reservation.add("r-b70a0ef1")
PS > $filter_reservation = New-Object Amazon.EC2.Model.Filter -Property @{Name = "reservation-id"; Values = $reservation}
PS > (Get-EC2Instance -Filter $filter_reservation).Instances

AmiLaunchIndex        : 0
Architecture          : x86_64
BlockDeviceMappings   : {/dev/sda1}
ClientToken           :
EbsOptimized          : False
Hypervisor            : xen
IamInstanceProfile    :
ImageId               : ami-c49c0dac
InstanceId            : i-5203422c
InstanceLifecycle     :
InstanceType          : m1.small
KernelId              :
KeyName               : myPSKeyPair
LaunchTime            : 12/2/2018 3:38:52 PM
Monitoring            : Amazon.EC2.Model.Monitoring
NetworkInterfaces     : {}
Placement             : Amazon.EC2.Model.Placement
Platform              : Windows
PrivateDnsName        :
PrivateIpAddress      : 10.25.1.11
ProductCodes          : {}
PublicDnsName         :
PublicIpAddress       : 198.51.100.245
RamdiskId             :
RootDeviceName        : /dev/sda1
RootDeviceType        : ebs
SecurityGroups        : {myPSSecurityGroup}
SourceDestCheck       : True
SpotInstanceRequestId :
SriovNetSupport       :
State                 : Amazon.EC2.Model.InstanceState
StateReason           :
StateTransitionReason :
SubnetId              : subnet-d60013bf
Tags                  : {}
VirtualizationType    : hvm
VpcId                 : vpc-a01106c2
```

## VPC でのスポットインスタンスの起動
<a name="new-ec2instance-spot"></a>

次のスクリプト例は、指定されたサブネットのスポットインスタンスをリクエストします。セキュリティグループは、指定したサブネットが含まれている VPC 用に作成したものである必要があります。

```
$interface1 = New-Object Amazon.EC2.Model.InstanceNetworkInterfaceSpecification
$interface1.DeviceIndex = 0
$interface1.SubnetId = "subnet-b61f49f0"
$interface1.PrivateIpAddress = "10.0.1.5"
$interface1.Groups.Add("sg-5d293231")
Request-EC2SpotInstance `
    -SpotPrice 0.007 `
    -InstanceCount 1 `
    -Type one-time `
    -LaunchSpecification_ImageId ami-7527031c `
    -LaunchSpecification_InstanceType m1.small `
    -Region us-west-2 `
    -LaunchSpecification_NetworkInterfaces $interface1
```

# AWS Lambda および AWS Tools for PowerShell
<a name="pstools-lambda"></a>

[AWSLambdaPSCore](https://www.powershellgallery.com/packages/AWSLambdaPSCore) モジュールを使用すると、.NET Core 2.1 ランタイムを使用して PowerShell Core 6.0 で AWS Lambda 関数を開発できます。PowerShell 開発者は、Lambda を使用して PowerShell 環境で AWS リソースを管理し、自動化スクリプトを記述できます。Lambda の PowerShell サポートにより、任意の Lambda イベント (Amazon S3 イベントやスケジュールされた Amazon CloudWatch イベントなど) に応じて PowerShell スクリプトまたは関数を実行できます。AWSLambdaPSCore モジュールは PowerShell 用の別の AWS モジュールであり、 の一部ではなく AWS Tools for PowerShell、AWSLambdaPSCore モジュールをインストールしても はインストールされません AWS Tools for PowerShell。

AWSLambdapScore モジュールのインストール後、使用可能な PowerShell コマンドレットを使用するか、独自のコマンドレットを開発して、サーバーレス関数を作成することができます。 AWS Lambda Tools for PowerShell モジュールには、PowerShell ベースのサーバーレスアプリケーション用のプロジェクトテンプレートと、プロジェクトを発行するためのツールが含まれています AWS。

AWSLambdaPSCore モジュールのサポートは、Lambda をサポートするすべてのリージョンで使用できます。サポートされるリージョンの詳細については、[AWS リージョン表](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)を参照してください。

## 前提条件
<a name="prerequisites"></a>

AWSLambdaPSCore モジュールをインストールして使用する前に、以下のステップを実行する必要があります。これらの手順の詳細については、「 AWS Lambda デベロッパーガイド[」のPowerShell 開発環境のセットアップ](https://docs.aws.amazon.com/lambda/latest/dg/lambda-powershell-setup-dev-environment.html)」を参照してください。
+  **PowerShell の適切なリリースのインストール** – Lambda での PowerShell のサポートは、クロスプラットフォームの PowerShell Core 6.0 リリースに基づいています。PowerShell Lambda 関数は、Windows、Linux、または Mac で作成できます。少なくともこのリリースの PowerShell をインストールしていない場合は、[Microsoft PowerShell ドキュメントのウェブサイト](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell)でインストール手順を参照してください。
+  **.NET Core 2.1 SDK のインストール** – PowerShell Core は .NET Core に基づいているため、Lambda での PowerShell のサポートでは同じ .NET Core 2.1 Lambda ランタイムを .NET Core と PowerShell Lambda 関数の両方に使用します。Lambda PowerShell でコマンドレットを発行する際は、.NET Core 2.1 SDK を使用して Lambda デプロイパッケージを作成します。.NET Core 2.1 SDK は [Microsoft ダウンロードセンター](https://www.microsoft.com/net/download)から入手できます。ランタイムではなく、SDK を必ずインストールしてください。

## AWSLambdaPSCore モジュールのインストール
<a name="install-the-awslambdapscore-module"></a>

前提条件を満たすと、AWSLambdaPSCore モジュールをインストールする準備が整います。PowerShell Core セッションで次のコマンドを実行します。

```
PS> Install-Module AWSLambdaPSCore -Scope CurrentUser
```

これで PowerShell での Lambda 関数の作成を開始できます。開始方法の詳細については、 AWS Lambda デベロッパーガイドの「[PowerShell での Lambda 関数の作成用プログラミングモデル](https://docs.aws.amazon.com/lambda/latest/dg/powershell-programming-model.html)」を参照してください。

## 以下の資料も参照してください。
<a name="see-also"></a>
+  [AWS 開発者ブログで PowerShell Core の Lambda サポートを発表](https://aws.amazon.com/blogs/developer/announcing-lambda-support-for-powershell-core/) 
+  [PowerShell Gallery ウェブサイトの AWSLambdaPSCore モジュール](https://www.powershellgallery.com/packages/AWSLambdaPSCore/1.0.0.2) 
+  [PowerShell 開発環境の設定](https://docs.aws.amazon.com/lambda/latest/dg/lambda-powershell-setup-dev-environment.html) 
+ [AWS GitHub の Lambda Tools for Powershell](https://github.com/aws/aws-lambda-dotnet/tree/master/PowerShell)
+  [AWS Lambda コンソール](https://console.aws.amazon.com/lambda/home) 

# Amazon SQS、Amazon SNS、および Tools for Windows PowerShell
<a name="pstools-sqs-queue-sns-topic"></a>

このセクションでは、次の方法の例を示します。
+ Amazon SQS キューを作成し、キュー ARN (Amazon リソースネーム) を取得します。
+ Amazon SNS トピックを作成します。
+ SNS トピックにアクセス許可を付与して、キューにメッセージを送信できるようにします。
+ キューの SNS トピックへのサブスクライブを行います。
+ IAM ユーザーまたは AWS アカウントに SNS トピックに発行し、SQS キューからメッセージを読み取るアクセス許可を付与します。
+ トピックにメッセージを発行し、キューからのメッセージを読むことで結果を確認します。

## Amazon SQS キューの作成およびキュー ARN の取得
<a name="pstools-create-sqs-queue"></a>

次のコマンドは、デフォルトのリージョンに SQS キューを作成します。出力には、新しいキューの URL が表示されます。

```
PS > New-SQSQueue -QueueName myQueue
https://sqs.us-west-2.amazonaws.com/123456789012/myQueue
```

次のコマンドは、キューの ARN を取得します。

```
PS > Get-SQSQueueAttribute -QueueUrl https://sqs.us-west-2.amazonaws.com/123456789012/myQueue -AttributeName QueueArn
...
QueueARN               : arn:aws:sqs:us-west-2:123456789012:myQueue
...
```

## Amazon SNS トピックを作成します。
<a name="pstools-create-sns-topic"></a>

次のコマンドは、デフォルトリージョンに SNS トピックを作成し、新しいトピックの ARN を返します。

```
PS > New-SNSTopic -Name myTopic
arn:aws:sns:us-west-2:123456789012:myTopic
```

## SNS トピックへのアクセス許可の付与
<a name="pstools-permissions-sns-topic"></a>

次のスクリプト例は、SQS キューと SNS トピックの両方を作成し、SQS キューにメッセージを送信できるように SNS トピックにアクセス許可を付与します。

```
# create the queue and topic to be associated
$qurl = New-SQSQueue -QueueName "myQueue"
$topicarn = New-SNSTopic -Name "myTopic"

# get the queue ARN to inject into the policy; it will be returned
# in the output's QueueARN member but we need to put it into a variable
# so text expansion in the policy string takes effect
$qarn = (Get-SQSQueueAttribute -QueueUrl $qurl -AttributeNames "QueueArn").QueueARN

# construct the policy and inject arns
$policy = @"
{
    "Version": "2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Principal": "*",
        "Action": "SQS:SendMessage",
        "Resource": "$qarn",
        "Condition": { "ArnEquals": { "aws:SourceArn": "$topicarn" } }
    }
}
"@

# set the policy
Set-SQSQueueAttribute -QueueUrl $qurl -Attribute @{ Policy=$policy }
```

## キューの SNS トピックへのサブスクライブを行います。
<a name="pstools-subscribe-queue-topic"></a>

次のコマンドは、SNS トピック `myTopic` にキュー `myQueue` をサブスクライブし、サブスクリプション ID を返します。

```
PS > Connect-SNSNotification `
    -TopicARN arn:aws:sns:us-west-2:123456789012:myTopic `
    -Protocol SQS `
    -Endpoint arn:aws:sqs:us-west-2:123456789012:myQueue
arn:aws:sns:us-west-2:123456789012:myTopic:f8ff77c6-e719-4d70-8e5c-a54d41feb754
```

## アクセス許可の付与
<a name="pstools-permissions-publish-read"></a>

次のコマンドでは、トピック `myTopic` に対して `sns:Publish` アクションを実行するためのアクセス許可を付与します。

```
PS > Add-SNSPermission `
    -TopicArn arn:aws:sns:us-west-2:123456789012:myTopic `
    -Label ps-cmdlet-topic `
    -AWSAccountIds 123456789012 `
    -ActionNames publish
```

次のコマンドでは、キュー `myQueue` の `sqs:ReceiveMessage` および `sqs:DeleteMessage` アクションを実行するためのアクセス許可を付与します。

```
PS > Add-SQSPermission `
    -QueueUrl https://sqs.us-west-2.amazonaws.com/123456789012/myQueue `
    -AWSAccountId "123456789012" `
    -Label queue-permission `
    -ActionName SendMessage, ReceiveMessage
```

## 結果の確認
<a name="pstools-verify-publish-read"></a>

次のコマンドは、SNS トピック `myTopic` にメッセージを発行して、新しいキューとトピックをテストし、`MessageId` を返します。

```
PS > Publish-SNSMessage `
    -TopicArn arn:aws:sns:us-west-2:123456789012:myTopic `
    -Message "Have A Nice Day!"
728180b6-f62b-49d5-b4d3-3824bb2e77f4
```

次のコマンドは、SQS キュー `myQueue` からメッセージを取得し、表示します。

```
PS > Receive-SQSMessage -QueueUrl https://sqs.us-west-2.amazonaws.com/123456789012/myQueue

Attributes             : {}
Body                   : {
                           "Type" : "Notification",
                           "MessageId" : "491c687d-b78d-5c48-b7a0-3d8d769ee91b",
                           "TopicArn" : "arn:aws:sns:us-west-2:123456789012:myTopic",
                           "Message" : "Have A Nice Day!",
                           "Timestamp" : "2019-09-09T21:06:27.201Z",
                           "SignatureVersion" : "1",
                           "Signature" : "llE17A2+XOuJZnw3TlgcXz4C4KPLXZxbxoEMIirelhl3u/oxkWmz5+9tJKFMns1ZOqQvKxk+ExfEZcD5yWt6biVuBb8pyRmZ1bO3hUENl3ayv2WQiQT1vpLpM7VEQN5m+hLIiPFcs
                         vyuGkJReV7lOJWPHnCN+qTE2lId2RPkFOeGtLGawTsSPTWEvJdDbLlf7E0zZ0q1niXTUtpsZ8Swx01X3QO6u9i9qBFt0ekJFZNJp6Avu05hIklb4yoRs1IkbLVNBK/y0a8Yl9lWp7a7EoWaBn0zhCESe7o
                         kZC6ncBJWphX7KCGVYD0qhVf/5VDgBuv9w8T+higJyvr3WbaSvg==",
                           "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-6aad65c2f9911b05cd53efda11f913f9.pem",
                           "UnsubscribeURL" : 
                         "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:myTopic:22b77de7-a216-4000-9a23-bf465744ca84"
                         }
MD5OfBody              : 5b5ee4f073e9c618eda3718b594fa257
MD5OfMessageAttributes : 
MessageAttributes      : {}
MessageId              : 728180b6-f62b-49d5-b4d3-3824bb2e77f4
ReceiptHandle          : AQEB2vvk1e5cOKFjeIWJticabkc664yuDEjhucnIOqdVUmie7bX7GiJbl7F0enABUgaI2XjEcNPxixhVc/wfsAJZLNHnl8SlbQa0R/kD+Saqa4OIvfj8x3M4Oh1yM1cVKpYmhAzsYrAwAD5g5FvxNBD6zs
                         +HmXdkax2Wd+9AxrHlQZV5ur1MoByKWWbDbsqoYJTJquCclOgWIak/sBx/daBRMTiVQ4GHsrQWMVHtNC14q7Jy/0L2dkmb4dzJfJq0VbFSX1G+u/lrSLpgae+Dfux646y8yFiPFzY4ua4mCF/SVUn63Spy
                         sHN12776axknhg3j9K/Xwj54DixdsegnrKoLx+ctI+0jzAetBR66Q1VhIoJAq7s0a2MseyOeM/Jjucg6Sr9VUnTWVhV8ErXmotoiEg==
```

# の CloudWatch AWS Tools for Windows PowerShell
<a name="pstools-cw"></a>

このセクションでは、Tools for Windows PowerShell を使用してカスタムメトリクスデータを CloudWatch に発行する方法を例を挙げて示します。

この例では、ユーザーの PowerShell セッションのデフォルトの認証情報とデフォルトのリージョンが設定済みであることを前提としています。

## カスタムメトリクスの CloudWatch ダッシュボードへの発行
<a name="pstools-cw-custom-metric-publish"></a>

次の PowerShell のコードでは、CloudWatch `MetricDatum` オブジェクトを初期化して、サービスに送信しています。このオペレーションの結果は、[CloudWatch コンソール](https://console.aws.amazon.com/cloudwatch/home)で確認できます。

```
$dat = New-Object Amazon.CloudWatch.Model.MetricDatum
$dat.Timestamp = (Get-Date).ToUniversalTime()
$dat.MetricName = "New Posts"
$dat.Unit = "Count"
$dat.Value = ".50"
Write-CWMetricData -Namespace "Usage Metrics" -MetricData $dat
```

次の点に注意してください。
+ `$dat.Timestamp` を初期化するために使用する日時情報は、協定世界時 (UTC) 形式で指定する必要があります。
+ `$dat.Value` を初期化するために使用する値は、引用符で囲まれた文字列値または数値 (引用符なし) のどちらかで指定する必要があります。この例は、文字列値を示しています。

## 以下の資料も参照してください。
<a name="see-also"></a>
+  [での AWS サービスの呼び出し AWS Tools for PowerShell](pstools-using.md) 
+  [AmazonCloudWatchClient.PutMetricData](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudWatch/MCloudWatchPutMetricDataPutMetricDataRequest.html) (.NET SDK リファレンス)
+  [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html) (サービス API リファレンス)
+  [Amazon CloudWatch コンソール](https://console.aws.amazon.com/cloudwatch/home) 

# コマンドレットでの ClientConfig パラメータの使用
<a name="pstools-clientconfig"></a>

`ClientConfig` パラメータを使用すると、サービスに接続するときに、特定の構成設定を指定できます。このパラメータの可能なプロパティのほとんどは クラスで定義され[https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TClientConfig.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TClientConfig.html)、 AWS サービスの APIs に継承されます。単純な継承の例については、[https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Keyspaces/TKeyspacesConfig.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Keyspaces/TKeyspacesConfig.html) クラスを参照してください。さらに、一部のサービスでは、そのサービスにのみ適切な追加プロパティが定義されています。定義されているその他のプロパティの例については、[https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TS3Config.html](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TS3Config.html) クラス、特に `ForcePathStyle` プロパティを参照してください。

## `ClientConfig` パラメータの使用
<a name="clientconfig-operation"></a>

`ClientConfig` パラメータを使用するには、コマンドラインで `ClientConfig` オブジェクトとして指定するか、PowerShell スプラッティングを使用してパラメータ値のコレクションをコマンドに単位として渡します。次の例に、これらの方法を示します。この例では、`AWS.Tools.S3` モジュールがインストールおよびインポートされ、適切なアクセス許可を持つ `[default]` 認証情報プロファイルがあることを前提としています。

******`ClientConfig` オブジェクトの定義**

```
$s3Config = New-Object -TypeName Amazon.S3.AmazonS3Config
$s3Config.ForcePathStyle = $true
$s3Config.Timeout = [TimeSpan]::FromMilliseconds(150000)
Get-S3Object -BucketName <BUCKET_NAME> -ClientConfig $s3Config
```

**PowerShell スプラッティングの使用による `ClientConfig` プロパティの追加**

```
$params=@{
    ClientConfig=@{
        ForcePathStyle=$true
        Timeout=[TimeSpan]::FromMilliseconds(150000)
    }
    BucketName="<BUCKET_NAME>"
}

Get-S3Object @params
```

## 未定義プロパティの使用
<a name="clientconfig-undefined"></a>

PowerShell スプラッティングを使用する場合、存在しない`ClientConfig`プロパティを指定すると、 AWS Tools for PowerShell はランタイムまでエラーを検出せず、その時点で例外を返します。上記の例を修正すると、次のようになります。

```
$params=@{
    ClientConfig=@{
        ForcePathStyle=$true
        UndefinedProperty="Value"
        Timeout=[TimeSpan]::FromMilliseconds(150000)
    }
    BucketName="<BUCKET_NAME>"
}

Get-S3Object @params
```

この例では、以下のような例外が生成されます。

```
Cannot bind parameter 'ClientConfig'. Cannot create object of type "Amazon.S3.AmazonS3Config". The UndefinedProperty property was not found for the Amazon.S3.AmazonS3Config object.
```

## の指定 AWS リージョン
<a name="clientconfig-region"></a>

`ClientConfig` パラメータを使用して、 コマンド AWS リージョン の を設定できます。[リージョン] は `RegionEndpoint` プロパティを通じて設定されます。は、次の優先順位に従って使用するリージョンを AWS Tools for PowerShell 計算します。

1. `-Region` パラメータ

1. `ClientConfig` パラメータで渡された [リージョン]

1. PowerShell のセッション状態

1. 共有 AWS `config`ファイル

1. 環境変数

1. Amazon EC2 インスタンスメタデータ (有効になっている場合)。