

# Guided command examples for the AWS CLI
<a name="cli-chap-services"></a>

AWS Command Line Interface (AWS CLI) は、コマンドラインシェルのコマンドを使用してさまざまな AWS のサービスとやり取りするためのオープンソースツールです。このセクションでは、AWS CLIを活用して一部の AWS のサービスにアクセスする方法を示すガイド付き例を示します。これには、高次の `aws s3` コマンドなど、いくつかのカスタム AWS CLI コマンドが含まれます。これらのコマンド例は、一部の AWS のサービスで使用される一般的なアクションを示し、詳細のための追加のリソースを提供します。

経験豊富な AWS ユーザーでも、AWS CLI が初めての場合でも、これらのガイド付き例は AWS の操作を合理化するためのリソースとして役立ちます。

各 AWS のサービスで利用できるすべてのコマンドが網羅されたリファレンスについては、「」「[AWS CLI バージョン 2 リファレンスガイド](https://docs.aws.amazon.com/cli/latest/reference/index.html)」を参照してください。さらに、[組み込みのコマンドラインヘルプ](cli-usage-help.md)を使用して、一連の AWS のサービス コマンド、オプション、および AWS CLI の機能を確認することができます。

このセクションで使用できないその他のコマンド例については、「[AWS CLI コマンドの例](cli_code_examples.md)」セクションを参照してください。これらは、「」「[AWS CLI バージョン 2 リファレンスガイド](https://docs.aws.amazon.com/cli/latest/reference/index.html)」にも記載されているオープンソースのコマンド例です。コマンド例は *GitHub * の [AWS CLI](https://github.com/aws/aws-cli/tree/develop/awscli/examples) リポジトリでホストされています。



 オープンソースの bash スクリプティングの例については、「[Bash スクリプトコードを使用した AWS CLI の例](bash_code_examples.md)」を参照してください。Bash スクリプトのサンプルは *GitHub* の [AWS コード例リポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples)でホストされています。

**Topics**
+ [DynamoDB](cli-services-dynamodb.md)
+ [Amazon EC2](cli-services-ec2.md)
+ [Amazon Glacier](cli-services-glacier.md)
+ [IAM](cli-services-iam.md)
+ [Amazon S3](cli-services-s3.md)
+ [Amazon SNS](cli-services-sns.md)

# Using Amazon DynamoDB in the AWS CLI
<a name="cli-services-dynamodb"></a>

AWS Command Line Interface (AWS CLI) は、Amazon DynamoDB を含めた AWS のすべてのデータベースサービスをサポートします。AWS CLI は、テーブルの作成などの臨時のオペレーションに使用できます。また、ユーティリティスクリプト内に DynamoDB オペレーションを埋め込むときにも使用できます。

DynamoDB での AWS CLI の使用に関する詳細については、AWS CLI コマンドリファレンスの ```[dynamodb](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/index.html)` を参照してください。

DynamoDB 向けの AWS CLI コマンドを一覧表示するには、次のコマンドを使用します。

```
$ aws dynamodb help
```

**Topics**
+ [前提条件](#cli-services-dynamodb-prereqs)
+ [DynamoDB テーブルの作成と使用](#cli-services-dynamodb-using)
+ [DynamoDB Local を使用する](#cli-services-dynamodb-local)
+ [リソース](#cli-services-dynamodb-resources)

## 前提条件
<a name="cli-services-dynamodb-prereqs"></a>

`dynamodb` コマンドを実行するには、次のことが必要です。
+ AWS CLI をインストールして設定します。詳細については、[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md) および [Authentication and access credentials for the AWS CLI](cli-chap-authentication.md) を参照してください。

## DynamoDB テーブルの作成と使用
<a name="cli-services-dynamodb-using"></a>

コマンドラインの形式は、DynamoDB コマンド名の後に、そのコマンドのパラメータが続きます。AWS CLI は、パラメータ値の CLI [短縮構文](cli-usage-shorthand.md)と、完全な JSON をサポートしています。

次の例では、`MusicCollection`という名前のテーブルを作成します。

```
$ aws dynamodb create-table \
    --table-name MusicCollection \
    --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
    --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
```

次の例に示されているようなコマンドと同様のコマンドで、新しい行をテーブルに追加できます。この例では、短縮構文と JSON を組み合わせて使用しています。

```
$ aws dynamodb put-item \
    --table-name MusicCollection \
    --item '{
        "Artist": {"S": "No One You Know"},
        "SongTitle": {"S": "Call Me Today"} ,
        "AlbumTitle": {"S": "Somewhat Famous"} 
      }' \
    --return-consumed-capacity TOTAL
{
    "ConsumedCapacity": {
        "CapacityUnits": 1.0,
        "TableName": "MusicCollection"
    }
}
```

```
$ aws dynamodb put-item \
    --table-name MusicCollection \
    --item '{ 
        "Artist": {"S": "Acme Band"}, 
        "SongTitle": {"S": "Happy Day"} , 
        "AlbumTitle": {"S": "Songs About Life"} 
      }' \
    --return-consumed-capacity TOTAL
{
    "ConsumedCapacity": {
        "CapacityUnits": 1.0,
        "TableName": "MusicCollection"
    }
}
```

有効な JSON を 1 行のコマンドで作成するのは難しい場合があります。これを簡単にするために、AWS CLI は JSON ファイルを読み取ることができます。例えば、`expression-attributes.json` という名前のファイルに格納されている次の JSON スニペットがあるとします。

```
{
  ":v1": {"S": "No One You Know"},
  ":v2": {"S": "Call Me Today"}
}
```

そのファイルを使用して、`query` を使用する AWS CLI リクエストを発行することができます。次の例では、`expression-attributes.json` ファイルの内容が `--expression-attribute-values` パラメータの値に使用されます。

```
$ aws dynamodb query --table-name MusicCollection \
    --key-condition-expression "Artist = :v1 AND SongTitle = :v2" \
    --expression-attribute-values file://expression-attributes.json
{
    "Count": 1,
    "Items": [
        {
            "AlbumTitle": {
                "S": "Somewhat Famous"
            },
            "SongTitle": {
                "S": "Call Me Today"
            },
            "Artist": {
                "S": "No One You Know"
            }
        }
    ],
    "ScannedCount": 1,
    "ConsumedCapacity": null
}
```

## DynamoDB Local を使用する
<a name="cli-services-dynamodb-local"></a>

DynamoDB に加えて、DynamoDB Local でも AWS CLI を使用できます。DynamoDB Local は、小規模のクライアント側データベースとサーバーで、DynamoDB サービスに似せて作られています。DynamoDB Local では、DynamoDB ウェブサービスでテーブルまたはデータを操作しなくても、DynamoDB API を使用するアプリケーションを作成することができます。すべての API アクションがローカルデータベースに転送されます。これにより、プロビジョニングされたスループット、データストレージ、およびデータ転送料金を節約できます。

DynamoDB Local、および AWS CLI での使用方法の詳細については、[Amazon DynamoDB デベロッパーガイド](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/)の以下のセクションを参照してください。
+ [DynamoDB Local](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.DynamoDBLocal.html)
+ [DynamoDB Local での AWS CLI の使用](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.CLI.html#UsingWithDDBLocal)

## リソース
<a name="cli-services-dynamodb-resources"></a>

**AWS CLI リファレンス:**
+ [https://docs.aws.amazon.com/cli/latest/reference/dynamodb/index.html](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/index.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/dynamodb/create-table.html](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/create-table.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/dynamodb/query.html](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/query.html)

**サービスリファレンス:**
+ Amazon DynamoDB デベロッパーガイドの [DynamoDB Local](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.DynamoDBLocal.html)
+ Amazon DynamoDB デベロッパーガイドの「[DynamoDB Local での AWS CLI の使用](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.CLI.html#UsingWithDDBLocal)」

# AWS CLI で Amazon EC2 を使用する
<a name="cli-services-ec2"></a>


| Amazon Elastic Compute Cloud のご紹介 | 
| --- | 
|  [![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/TsRBftzZsQo/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/TsRBftzZsQo)  | 

Amazon Elastic Compute Cloud (Amazon EC2) は、高度にスケーラブルで柔軟な仮想コンピューティング環境を提供します。Amazon EC2 を使用すると、Amazon EC2 インスタンスと呼ばれる仮想サーバーをプロビジョニングおよび管理して、さまざまなコンピューティング関連のニーズを満たすことができます。

Amazon EC2 インスタンスは、CPU、メモリ、ストレージ、ネットワーク機能をさまざまな設定でカスタマイズできる仮想マシンです。アプリケーションの要件に応じて、軽量かつ費用対効果の高いオプションから強力で高性能なインスタンスまで、さまざまなインスタンスタイプを選択できます。この柔軟性により、コンピューティング関連のニーズに合わせてパフォーマンスとコスト効率を最適化できます。

さらに、Amazon EC2 には、コンピューティングリソースを効果的に管理できる一連の機能が搭載されています。これには、新しいインスタンスをすばやく起動し、迅速にデプロイするためのカスタムマシンイメージ (AMI) を作成し、必要に応じてコンピューティング容量を増減させる機能が含まれます。

AWS Command Line Interface (AWS CLI) を使用して、Amazon EC2 の機能にアクセスできます。Amazon EC2 用の AWS CLI コマンドを一覧表示するには、次のコマンドを使用します。

```
aws ec2 help
```

コマンドを実行する前に、デフォルトの認証情報を設定します。詳細については、「[Configuring settings for the AWS CLI](cli-chap-configure.md)」を参照してください。

このトピックでは、Amazon EC2 の一般的なタスクを実行する AWS CLI コマンドの省略表記での例について説明します。

完全表記の AWS CLI コマンドの例については、*GitHub* の [AWS CLI code examples repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli) を参照してください。

**Topics**
+ [Creating, displaying, and deleting Amazon EC2 key pairs in the AWS CLI](cli-services-ec2-keypairs.md)
+ [AWS CLI の Amazon EC2 セキュリティグループの作成、設定、および削除](cli-services-ec2-sg.md)
+ [Launching, listing, and deleting Amazon EC2 instances in the AWS CLI](cli-services-ec2-instances.md)
+ [Change an Amazon EC2 instance type with a bash script in the AWS CLI](cli-services-ec2-instance-type-script.md)

# Creating, displaying, and deleting Amazon EC2 key pairs in the AWS CLI
<a name="cli-services-ec2-keypairs"></a>

AWS Command Line Interface (AWS CLI) を使用して、Amazon Elastic Compute Cloud (Amazon EC2) のキーペアを作成、表示、および削除することができます。キーペアは Amazon EC2 インスタンスに接続するときに使用します。インスタンスの作成時に Amazon EC2 にキーペアを指定し、インスタンスへの接続時にこのキーペアを使用して認証できます。

**注記**  
その他のコマンドの例については、「[AWS CLI リファレンスガイド](https://docs.aws.amazon.com/cli/latest/reference/index.html)」を参照してください。

**Topics**
+ [前提条件](#cli-services-ec2-keypairs-prereqs)
+ [キーペアを作成する](#creating-a-key-pair)
+ [キーペアの表示](#displaying-a-key-pair)
+ [キーペアの削除](#deleting-a-key-pair)
+ [リファレンス](#cli-services-ec2-keypairs-references)

## 前提条件
<a name="cli-services-ec2-keypairs-prereqs"></a>

`ec2` コマンドを実行するには、次のことが必要です。
+ AWS CLI をインストールして設定します。詳細については、「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」および「」を参照してください。[Authentication and access credentials for the AWS CLI](cli-chap-authentication.md)
+ Amazon EC2 アクセスできるように IAM アクセス許可を設定します。Amazon EC2 に対する IAM アクセス許可の詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 の IAM ポリシー](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html)」を参照してください。

## キーペアを作成する
<a name="creating-a-key-pair"></a>

キーペアを作成するには、`[aws ec2 create-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html)` コマンドを `--query` オプションおよび `--output text` オプションと共に使用して、プライベートキーをファイルに直接パイプします。

```
$ aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text > MyKeyPair.pem
```

PowerShell では、`> file` リダイレクトはデフォルトで UTF-8 エンコードされます。これは一部の SSH クライアントでは使用できません。そのため、出力を `out-file` コマンドにパイプすることによって変換し、エンコードを `ascii` に明示的に設定する必要があります。

```
PS C:\>aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text | out-file -encoding ascii -filepath MyKeyPair.pem
```

出力された `MyKeyPair.pem` ファイルは以下のようになります。

```
-----BEGIN RSA PRIVATE KEY-----
EXAMPLEKEYKCAQEAy7WZhaDsrA1W3mRlQtvhwyORRX8gnxgDAfRt/gx42kWXsT4rXE/b5CpSgie/
vBoU7jLxx92pNHoFnByP+Dc21eyyz6CvjTmWA0JwfWiW5/akH7iO5dSrvC7dQkW2duV5QuUdE0QW
Z/aNxMniGQE6XAgfwlnXVBwrerrQo+ZWQeqiUwwMkuEbLeJFLhMCvYURpUMSC1oehm449ilx9X1F
G50TCFeOzfl8dqqCP6GzbPaIjiU19xX/azOR9V+tpUOzEL+wmXnZt3/nHPQ5xvD2OJH67km6SuPW
oPzev/D8V+x4+bHthfSjR9Y7DvQFjfBVwHXigBdtZcU2/wei8D/HYwIDAQABAoIBAGZ1kaEvnrqu
/uler7vgIn5m7lN5LKw4hJLAIW6tUT/fzvtcHK0SkbQCQXuriHmQ2MQyJX/0kn2NfjLV/ufGxbL1
mb5qwMGUnEpJaZD6QSSs3kICLwWUYUiGfc0uiSbmJoap/GTLU0W5Mfcv36PaBUNy5p53V6G7hXb2
bahyWyJNfjLe4M86yd2YK3V2CmK+X/BOsShnJ36+hjrXPPWmV3N9zEmCdJjA+K15DYmhm/tJWSD9
81oGk9TopEp7CkIfatEATyyZiVqoRq6k64iuM9JkA3OzdXzMQexXVJ1TLZVEH0E7bhlY9d8O1ozR
oQs/FiZNAx2iijCWyv0lpjE73+kCgYEA9mZtyhkHkFDpwrSM1APaL8oNAbbjwEy7Z5Mqfql+lIp1
YkriL0DbLXlvRAH+yHPRit2hHOjtUNZh4Axv+cpg09qbUI3+43eEy24B7G/Uh+GTfbjsXsOxQx/x
p9otyVwc7hsQ5TA5PZb+mvkJ5OBEKzet9XcKwONBYELGhnEPe7cCgYEA06Vgov6YHleHui9kHuws
ayav0elc5zkxjF9nfHFJRry21R1trw2Vdpn+9g481URrpzWVOEihvm+xTtmaZlSp//lkq75XDwnU
WA8gkn6O3QE3fq2yN98BURsAKdJfJ5RL1HvGQvTe10HLYYXpJnEkHv+Unl2ajLivWUt5pbBrKbUC
gYBjbO+OZk0sCcpZ29sbzjYjpIddErySIyRX5gV2uNQwAjLdp9PfN295yQ+BxMBXiIycWVQiw0bH
oMo7yykABY7Ozd5wQewBQ4AdSlWSX4nGDtsiFxWiI5sKuAAeOCbTosy1s8w8fxoJ5Tz1sdoxNeGs
Arq6Wv/G16zQuAE9zK9vvwKBgF+09VI/1wJBirsDGz9whVWfFPrTkJNvJZzYt69qezxlsjgFKshy
WBhd4xHZtmCqpBPlAymEjr/TOlbxyARmXMnIOWIAnNXMGB4KGSyl1mzSVAoQ+fqR+cJ3d0dyPl1j
jjb0Ed/NY8frlNDxAVHE8BSkdsx2f6ELEyBKJSRr9snRAoGAMrTwYneXzvTskF/S5Fyu0iOegLDa
NWUH38v/nDCgEpIXD5Hn3qAEcju1IjmbwlvtW+nY2jVhv7UGd8MjwUTNGItdb6nsYqM2asrnF3qS
VRkAKKKYeGjkpUfVTrW0YFjXkfcrR/V+QFL5OndHAKJXjW7a4ejJLncTzmZSpYzwApc=
-----END RSA PRIVATE KEY-----
```

プライベートキーは AWS に保存されず、作成時に***のみ***取得することができます。後で復元することはできません。代わりに、プライベートキーを紛失した場合は、新しいキーペアを作成する必要があります。

Linux コンピュータからインスタンスに接続している場合は、他のユーザーが読み取れないように、次のコマンドを使用してプライベートキーファイルのアクセス許可を設定することをお勧めします。

```
$ chmod 400 MyKeyPair.pem
```

## キーペアの表示
<a name="displaying-a-key-pair"></a>

「フィンガープリント」はキーペアから生成され、これを使用してローカルマシンのプライベートキーが AWS に保存されたパブリックキーと一致することを確認できます。

フィンガープリントは、DER でエンコードされたプライベートキーのコピーから取得される SHA1 ハッシュです。この値はキーペアの作成時にキャプチャされて、パブリックキーとともに AWS に格納されます。フィンガープリントは、Amazon EC2 コンソールで、または AWS CLI コマンド `[aws ec2 describe-key-pairs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html)` を実行することで表示できます。

次の例は、`MyKeyPair` のフィンガープリントを表示します。

```
$ aws ec2 describe-key-pairs --key-name MyKeyPair
{
    "KeyPairs": [
        {
            "KeyName": "MyKeyPair",
            "KeyFingerprint": "1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f"
        }
    ]
}
```

キーとフィンガープリントの詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 キーペア](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)」を参照してください。

## キーペアの削除
<a name="deleting-a-key-pair"></a>

キーペアを削除するには、*`MyKeyPair`* を削除するペアの名前に置き換えて、`[aws ec2 delete-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html)` コマンドを実行します。

```
$ aws ec2 delete-key-pair --key-name MyKeyPair
```

## リファレンス
<a name="cli-services-ec2-keypairs-references"></a>

**AWS CLI リファレンス:**
+ `[aws ec2](https://docs.aws.amazon.com/cli/latest/reference/ec2/index.html)`
+ `[aws ec2 create-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html)`
+ `[aws ec2 delete-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html)`
+ `[aws ec2 describe-key-pairs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html)`

**その他のリファレンス:**
+ [Amazon Elastic Compute Cloud のドキュメント](https://docs.aws.amazon.com/ec2/)
+ AWS SDK および AWS CLI のコード例を表示したり、提供したりするには、*GitHub* の [AWS コード例のリポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/)を参照してください。

# AWS CLI の Amazon EC2 セキュリティグループの作成、設定、および削除
<a name="cli-services-ec2-sg"></a>

本質的にファイアウォールとして動作する Amazon Elastic Compute Cloud (Amazon EC2) インスタンス用のセキュリティグループを作成し、入退出が可能なネットワークトラフィックを決めるルールと共に作成することができます。

AWS Command Line Interface (AWS CLI) を使用して新しいセキュリティグループを作成し、既存のセキュリティグループにルールを追加して、セキュリティグループを削除します。

**注記**  
その他のコマンドの例については、「[AWS CLI リファレンスガイド](https://docs.aws.amazon.com/cli/latest/reference/index.html)」を参照してください。

**Topics**
+ [前提条件](#cli-services-ec2-sg-prereqs)
+ [セキュリティグループの作成](#creating-a-security-group)
+ [ルールをセキュリティグループに追加する](#configuring-a-security-group)
+ [セキュリティグループを削除する](#deleting-a-security-group)
+ [リファレンス](#cli-services-ec2-sg-references)

## 前提条件
<a name="cli-services-ec2-sg-prereqs"></a>

`ec2` コマンドを実行するには、次のことが必要です。
+ AWS CLI をインストールして設定します。詳細については、「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」および「」を参照してください。[Authentication and access credentials for the AWS CLI](cli-chap-authentication.md)
+ Amazon EC2 アクセスできるように IAM アクセス許可を設定します。Amazon EC2 に対する IAM アクセス許可の詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 の IAM ポリシー](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html)」を参照してください。

## セキュリティグループの作成
<a name="creating-a-security-group"></a>

仮想プライベートクラウド (VPC) に関連するセキュリティグループを作成できます。

次の `[aws ec2 create-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-security-group.html)` の例は、指定された VPC のセキュリティグループを作成する方法を示しています。

```
$ aws ec2 create-security-group --group-name my-sg --description "My security group" --vpc-id vpc-1a2b3c4d
{
    "GroupId": "sg-903004f8"
}
```

セキュリティグループの初期情報を表示するには、`[aws ec2 describe-security-groups](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-groups.html)` コマンドを実行します。EC2-VPC セキュリティグループは、名前ではなく `vpc-id` によってのみ参照することができます。

```
$ aws ec2 describe-security-groups --group-ids sg-903004f8
{
    "SecurityGroups": [
        {
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "UserIdGroupPairs": []
                }
            ],
            "Description": "My security group"
            "IpPermissions": [],
            "GroupName": "my-sg",
            "VpcId": "vpc-1a2b3c4d",
            "OwnerId": "123456789012",
            "GroupId": "sg-903004f8"
        }
    ]
}
```

## ルールをセキュリティグループに追加する
<a name="configuring-a-security-group"></a>

Amazon EC2 インスタンスを実行するときには、セキュリティグループのルールを有効にして、イメージに接続する手段としての着信ネットワークトラフィックを有効にする必要があります。

例えば、Windows インスタンスを起動する場合、Remote Desktop Protocol (RDP) をサポートするには、一般に TCP ポート 3389 へのインバウンドトラフィックを許可するルールを追加します。Linux インスタンスを起動する場合、SSH 接続をサポートするには、一般に TCP ポート 22 へのインバウンドトラフィックを許可するルールを追加します。

セキュリティグループにルールを追加するには、`[aws ec2 authorize-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html)` コマンドを使用します。このコマンドの必須パラメータは、コンピュータのパブリック IP アドレス、またはコンピュータが接続しているネットワーク (アドレス範囲の形式で) の [CIDR](https://wikipedia.org/wiki/Classless_Inter-Domain_Routing) 表記です。

**注記**  
当社では、以下のサービス[ https://checkip.global.api.aws/ ](https://checkip.global.api.aws/)を提供し、お客様のパブリック IP アドレスを特定できます。IP アドレスの識別に役立つその他のサービスを見つけるには、ブラウザを使用して「*what is my IP address*」を検索します。ISP 経由、またはファイアウォールの内側から動的な IP アドレスを使用して接続している場合 (プライベートネットワークの NAT ゲートウェイ経由)、アドレスは定期的に変更される場合があります。その場合、クライアントコンピュータによって使用される IP アドレスの範囲を見つける必要があります。

次の例は、IP アドレスを使用して ID `sg-903004f8` を持つ EC2-VPC セキュリティグループに RDP (TCP ポート 3389) のルールを追加する方法を示しています。

まず、あなたの IP アドレスを探してください。

```
$ curl https://checkip.amazonaws.com
x.x.x.x
```

その後、`[aws ec2 authorize-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html)` コマンドを実行して、セキュリティグループに IP アドレスを追加できます。

```
$ aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol tcp --port 3389 --cidr x.x.x.x/x
```

次のコマンドは、同じセキュリティグループのインスタンスに SSH を有効にする別のルールを追加します。

```
$ aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol tcp --port 22 --cidr x.x.x.x/x
```

セキュリティグループに加えられた変更を表示するには、`[aws ec2 describe-security-groups](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-groups.html)` コマンドを実行します。

```
$ aws ec2 describe-security-groups --group-ids sg-903004f8
{
    "SecurityGroups": [
        {
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "UserIdGroupPairs": []
                }
            ],
            "Description": "My security group"
            "IpPermissions": [
                {
                    "ToPort": 22,
                    "IpProtocol": "tcp",
                    "IpRanges": [
                        {
                            "CidrIp": "x.x.x.x/x"
                        }
                    ]
                    "UserIdGroupPairs": [],
                    "FromPort": 22
                }
            ],
            "GroupName": "my-sg",
            "OwnerId": "123456789012",
            "GroupId": "sg-903004f8"
        }
    ]
}
```

## セキュリティグループを削除する
<a name="deleting-a-security-group"></a>

セキュリティグループを削除するには、`[aws ec2 delete-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-security-group.html)` コマンドを実行します。

**注記**  
環境に現在アタッチされているセキュリティグループは削除できません。

次のコマンド例は、EC2-VPC セキュリティグループを削除します。

```
$ aws ec2 delete-security-group --group-id sg-903004f8
```

## リファレンス
<a name="cli-services-ec2-sg-references"></a>

**AWS CLI リファレンス:**
+ `[aws ec2](https://docs.aws.amazon.com/cli/latest/reference/ec2/index.html)`
+ `[aws ec2 authorize-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html)`
+ `[aws ec2 create-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-security-group.html)`
+ `[aws ec2 delete-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-security-group.html)`
+ `[aws ec2 describe-security-groups](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-groups.html)`

**その他のリファレンス:**
+ [Amazon Elastic Compute Cloud のドキュメント](https://docs.aws.amazon.com/ec2/)
+ AWS SDK および AWS CLI のコード例を表示したり、提供したりするには、*GitHub* の [AWS コード例のリポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/)を参照してください。

# Launching, listing, and deleting Amazon EC2 instances in the AWS CLI
<a name="cli-services-ec2-instances"></a>

AWS Command Line Interface (AWS CLI) を使用して、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動、一覧表示、および削除することができます。AWS 無料利用枠に含まれないインスタンスを起動する場合は、インスタンスを起動すると料金が発生し、そのインスタンスの実行中はアイドル状態であっても料金がかかります。

**注記**  
その他のコマンドの例については、「[AWS CLI リファレンスガイド](https://docs.aws.amazon.com/cli/latest/reference/index.html)」を参照してください。

**Topics**
+ [前提条件](#cli-services-ec2-instances-prereqs)
+ [インスタンスの起動](#launching-instances)
+ [インスタンスへのブロックデバイスの追加](#block-device-mapping)
+ [インスタンスへのタグの追加](#tagging-instances)
+ [インスタンスへの接続](#connecting-to-instances)
+ [インスタンスの一覧表示](#listing-instances)
+ [インスタンスの削除](#terminating-instances)
+ [リファレンス](#cli-services-ec2-instances-references)

## 前提条件
<a name="cli-services-ec2-instances-prereqs"></a>

このトピックの `ec2` コマンドを実行するには、次の操作を行う必要があります。
+ AWS CLI をインストールして設定します。詳細については、「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」および「」を参照してください。[Authentication and access credentials for the AWS CLI](cli-chap-authentication.md)
+ Amazon EC2 アクセスできるように IAM アクセス許可を設定します。Amazon EC2 に対する IAM アクセス許可の詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 の IAM ポリシー](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html)」を参照してください。
+ [キーペア](cli-services-ec2-keypairs.md)と[セキュリティグループ](cli-services-ec2-sg.md)を作成します。
+ Amazon マシンイメージ (AMI) を選択し、AMI ID をメモします。詳しくは、「*Amazon EC2 ユーザーガイド*」の「[適切な AMI の検索](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html)」を参照してください。

## インスタンスの起動
<a name="launching-instances"></a>

選択した AMI を使用して Amazon EC2 インスタンスを起動するには、`[aws ec2 run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)` コマンドを使用します。インスタンスは、仮想プライベートクラウド (VPC) で起動できます。

当初、インスタンスは `pending` 状態で表示されますが、数分後に `running` 状態に変わります。

以下の例は、`t2.micro` インスタンスを指定された VPC のサブネットで起動する方法を示しています。*斜体で示されている*パラメータ値をユーザー自身の値に置き換えてください。

```
$ aws ec2 run-instances --image-id ami-xxxxxxxx --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-903004f8 --subnet-id subnet-6e7f829e
{
    "OwnerId": "123456789012",
    "ReservationId": "r-5875ca20",
    "Groups": [
        {
            "GroupName": "my-sg",
            "GroupId": "sg-903004f8"
        }
    ],
    "Instances": [
        {
            "Monitoring": {
                "State": "disabled"
            },
            "PublicDnsName": null,
            "Platform": "windows",
            "State": {
                "Code": 0,
                "Name": "pending"
            },
            "EbsOptimized": false,
            "LaunchTime": "2013-07-19T02:42:39.000Z",
            "PrivateIpAddress": "10.0.1.114",
            "ProductCodes": [],
            "VpcId": "vpc-1a2b3c4d",
            "InstanceId": "i-5203422c",
            "ImageId": "ami-173d747e",
            "PrivateDnsName": "ip-10-0-1-114.ec2.internal",
            "KeyName": "MyKeyPair",
            "SecurityGroups": [
                {
                    "GroupName": "my-sg",
                    "GroupId": "sg-903004f8"
                }
            ],
            "ClientToken": null,
            "SubnetId": "subnet-6e7f829e",
            "InstanceType": "t2.micro",
            "NetworkInterfaces": [
                {
                    "Status": "in-use",
                    "SourceDestCheck": true,
                    "VpcId": "vpc-1a2b3c4d",
                    "Description": "Primary network interface",
                    "NetworkInterfaceId": "eni-a7edb1c9",
                    "PrivateIpAddresses": [
                        {
                            "PrivateDnsName": "ip-10-0-1-114.ec2.internal",
                            "Primary": true,
                            "PrivateIpAddress": "10.0.1.114"
                        }
                    ],
                    "PrivateDnsName": "ip-10-0-1-114.ec2.internal",
                    "Attachment": {
                        "Status": "attached",
                        "DeviceIndex": 0,
                        "DeleteOnTermination": true,
                        "AttachmentId": "eni-attach-52193138",
                        "AttachTime": "2013-07-19T02:42:39.000Z"
                    },
                    "Groups": [
                        {
                            "GroupName": "my-sg",
                            "GroupId": "sg-903004f8"
                        }
                    ],
                    "SubnetId": "subnet-6e7f829e",
                    "OwnerId": "123456789012",
                    "PrivateIpAddress": "10.0.1.114"
                }              
            ],
            "SourceDestCheck": true,
            "Placement": {
                "Tenancy": "default",
                "GroupName": null,
                "AvailabilityZone": "us-west-2b"
            },
            "Hypervisor": "xen",
            "BlockDeviceMappings": [
                {
                    "DeviceName": "/dev/sda1",
                    "Ebs": {
                        "Status": "attached",
                        "DeleteOnTermination": true,
                        "VolumeId": "vol-877166c8",
                        "AttachTime": "2013-07-19T02:42:39.000Z"
                    }
                }              
            ],
            "Architecture": "x86_64",
            "StateReason": {
                "Message": "pending",
                "Code": "pending"
            },
            "RootDeviceName": "/dev/sda1",
            "VirtualizationType": "hvm",
            "RootDeviceType": "ebs",
            "Tags": [
                {
                    "Value": "MyInstance",
                    "Key": "Name"
                }
            ],
            "AmiLaunchIndex": 0
        }
    ]
}
```

## インスタンスへのブロックデバイスの追加
<a name="block-device-mapping"></a>

起動する各インスタンスにはルートデバイスボリュームが関連付けられています。ブロックデバイスマッピングを使用すると、インスタンスの起動時にインスタンスにアタッチする追加の Amazon Elastic Block Store (Amazon EBS) ボリュームまたはインスタンスストアボリュームを指定できます。

ブロックデバイスをインスタンスに追加するには、`--block-device-mappings` を使用するときに `run-instances` オプションを指定します。

次のパラメータ例では、20 GB のサイズの標準の Amazon EBS ボリュームをプロビジョニングし、識別子 `/dev/sdf` を使用してインスタンスにマッピングします。

```
--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false}}]"
```

次の例では、既存のスナップショットに基づいて `/dev/sdf` にマッピングされる Amazon EBS ボリュームを追加します。スナップショットは、ボリュームに自動的にロードされるイメージを表します。スナップショットを指定するとき、ボリュームサイズを指定する必要はありません。イメージを保持できる十分な大きさになります。ただし、サイズを指定する場合は、スナップショットのサイズ以上である必要があります。

```
--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"Ebs\":{\"SnapshotId\":\"snap-a1b2c3d4\"}}]"
```

次の例は、2 つのボリュームをインスタンスに追加します。インスタンスで使用できるボリュームの数は、インスタンスタイプによって異なります。

```
--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"VirtualName\":\"ephemeral0\"},{\"DeviceName\":\"/dev/sdg\",\"VirtualName\":\"ephemeral1\"}]"
```

次の例では、マッピング (`/dev/sdj`) を作成しますが、インスタンスのボリュームはプロビジョニングされません。

```
--block-device-mappings "[{\"DeviceName\":\"/dev/sdj\",\"NoDevice\":\"\"}]"
```

詳細については、「*Amazon EC2 ユーザーガイド*」の「[ブロックデバイスマッピング](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html)」を参照してください。

## インスタンスへのタグの追加
<a name="tagging-instances"></a>

タグとは、AWS リソースに付けるラベルです。リソースにメタデータを追加して、さまざまな目的に使用できます。詳細については、「*Amazon EC2 ユーザーガイド*」の「[リソースのタグ付け](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)」を参照してください。

次の例は、`[aws ec2 create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html)` コマンドを使用して、キー名「`Name`」と値「`MyInstance`」を持つタグを指定されたインスタンスに追加する方法を示しています。

```
$ aws ec2 create-tags --resources i-5203422c --tags Key=Name,Value=MyInstance
```

## インスタンスへの接続
<a name="connecting-to-instances"></a>

実行中のインスタンスに接続して、目の前にあるコンピュータと同じように使用することができます。詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 インスタンスに接続する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html)」を参照してください。

## インスタンスの一覧表示
<a name="listing-instances"></a>

AWS CLI を使用して、インスタンスを一覧表示し、それらの情報を表示できます。すべてのインスタンスを一覧表示することも、目的のインスタンスに基づいて結果をフィルタリングすることもできます。

次に、`[aws ec2 describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)` コマンドの使用例を示します。

次のコマンドでは、すべてのインスタンスが一覧表示されます。

```
$ aws ec2 describe-instances
```

次のコマンドは、リストを `t2.micro` インスタンスのみにフィルタリングして、一致した `InstanceId` 値のみを出力します。

```
$ aws ec2 describe-instances --filters "Name=instance-type,Values=t2.micro" --query "Reservations[].Instances[].InstanceId"
[
    "i-05e998023d9c69f9a"
]
```

次のコマンドは、タグ `Name=MyInstance` を持つインスタンスをリストします。

```
$ aws ec2 describe-instances --filters "Name=tag:Name,Values=MyInstance"
```

次のコマンドは、`ami-x0123456`、`ami-y0123456`、および `ami-z0123456` のいずれかの AMI を使用して起動されたインスタンスをリストします。

```
$ aws ec2 describe-instances --filters "Name=image-id,Values=ami-x0123456,ami-y0123456,ami-z0123456"
```

## インスタンスの削除
<a name="terminating-instances"></a>

AWS CLI を使用して、不要になった Amazon EC2 インスタンスを終了 (削除) できます。

**重要**  
**インスタンスの終了は恒久的で、元に戻すことができません。**  
インスタンスを終了すると、そのインスタンスには接続できなくなり、復元することもできません。アタッチされている Amazon EBS ボリュームで、終了時に削除されるように設定されているものも、すべて恒久的に削除され、復元できません。インスタンスストアボリュームに保存されているデータは、すべて恒久的に失われます。詳細については、「[インスタンスの終了方法](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/how-ec2-instance-termination-works.html)」を参照してください。  
インスタンスを終了する前に、終了後も保持する必要があるすべてのデータを永続的ストレージにバックアップしたことを確認してください。

インスタンスの状態が `shutting-down` または `terminated` に変わったら、そのインスタンスへの課金は停止します。後でインスタンスに再接続する必要がある場合は、`terminate-instances` の代わりに [stop-instances](https://docs.aws.amazon.com/cli/v1/reference/ec2/stop-instances.html) を使用します。詳細については、*Amazon EC2 ユーザーガイド* の [インスタンスの終了](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html) を参照してください。

次の例は、`[aws ec2 terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html)` コマンドを使用してインスタンスを削除する方法を示しています。

```
$ aws ec2 terminate-instances --instance-ids i-5203422c
{
    "TerminatingInstances": [
        {
            "InstanceId": "i-5203422c",
            "CurrentState": {
                "Code": 32,
                "Name": "shutting-down"
            },
            "PreviousState": {
                "Code": 16,
                "Name": "running"
            }
        }
    ]
}
```

## リファレンス
<a name="cli-services-ec2-instances-references"></a>

**AWS CLI リファレンス:**
+ `[aws ec2](https://docs.aws.amazon.com/cli/latest/reference/ec2/index.html)`
+ `[aws ec2 create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html)`
+ `[aws ec2 describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)`
+ `[aws ec2 run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)`
+ `[aws ec2 terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html)`

**その他のリファレンス:**
+ [Amazon Elastic Compute Cloud のドキュメント](https://docs.aws.amazon.com/ec2/)
+ AWS SDK および AWS CLI のコード例を表示したり、提供したりするには、*GitHub* の [AWS コード例のリポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/)を参照してください。

# Change an Amazon EC2 instance type with a bash script in the AWS CLI
<a name="cli-services-ec2-instance-type-script"></a>

この Amazon EC2 用の bash スクリプト例は、AWS Command Line Interface (AWS CLI) を使用して Amazon EC2 インスタンスのインスタンスタイプを変更します。実行中の場合はインスタンスを停止し、インスタンスタイプを変更してから、リクエストに応じてインスタンスを再起動します。シェルスクリプトは、コマンドラインインターフェイスで実行するように設計されたプログラムです。

**注記**  
その他のコマンドの例については、「[AWS CLI リファレンスガイド](https://docs.aws.amazon.com/cli/latest/reference/index.html)」を参照してください。

**Topics**
+ [開始する前に](#cli-services-ec2-instance-type-script-prereqs)
+ [この例について](#cli-services-ec2-instance-type-script-about)
+ [パラメータ](#cli-services-ec2-instance-type-script-params)
+ [ファイル](#cli-services-ec2-instance-type-script-files.title)
+ [リファレンス](#cli-services-ec2-instance-type-script-references)

## 開始する前に
<a name="cli-services-ec2-instance-type-script-prereqs"></a>

以下の例を実行する前に、次のことを完了する必要があります。
+ AWS CLI をインストールして設定します。詳細については、「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」および「」を参照してください。[Authentication and access credentials for the AWS CLI](cli-chap-authentication.md)
+ 使用するプロファイルには、例によって実行される AWS オペレーションに対する許可が必要です。
+ 停止および変更するアクセス許可を持つ、アカウントで実行中の Amazon EC2 インスタンス。テストスクリプトを実行すると、インスタンスが起動し、タイプの変更がテストされてから、インスタンスが終了します。
+ AWS のベストプラクティスとして、このコードには最小権限を付与するか、タスクの実行に必要な許可のみを付与します。詳細については、*AWS Identity and Access Management (IAM) ユーザーガイド*の「[最小限の特権を認める](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)」を参照してください。
+ このコードは、すべての AWS リージョンでテストされているわけではありません。AWS の一部のサービスは、特定のリージョンでのみ利用可能です。詳細については、*AWS 全般のリファレンスガイド*の「[サービスエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」を参照してください。
+ このコードを実行すると、AWS アカウントに料金が請求される場合があります。作業が終了したら、このスクリプトによって作成されたすべてのリソースを確実に削除するのはお客様の責任になります。

## この例について
<a name="cli-services-ec2-instance-type-script-about"></a>

この例は、シェルスクリプトファイル `change_ec2_instance_type.sh` 内の関数として記述されており、別のスクリプトまたはコマンドラインから `source` できます。各スクリプトファイルには、各関数について説明するコメントが含まれています。関数がメモリに置かれたら、コマンドラインから呼び出すことができます。例えば、次のコマンドは、指定されたインスタンスのタイプを `t2.nano` に変更します。

```
$ source ./change_ec2_instance_type.sh
$ ./change_ec2_instance_type -i *instance-id* -t new-type
```

完全な例とダウンロード可能なスクリプトファイルについては、*GitHub* の *AWS コード例のリポジトリ*の「[Change Amazon EC2 Instance Type](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/ec2/change-ec2-instance-type)」を参照してください。

## パラメータ
<a name="cli-services-ec2-instance-type-script-params"></a>

**-i** - *(文字列)* 変更するインスタンス ID を指定します。

**-t** - *(文字列)* 切り替え先の Amazon EC2 インスタンスタイプを指定します。

**-r** - *(スイッチ)* デフォルトでは、これは設定されていません。`-r` が設定されている場合、タイプの切り替え後にインスタンスを再起動します。

**-f** - *(スイッチ)* デフォルトでは、スクリプトは切り替えを行う前にインスタンスのシャットダウンを確認するプロンプトを表示します。`-f` が設定されている場合、この関数はインスタンスをシャットダウンしてタイプを切り替える前にユーザーにプロンプトを表示しません。

**-v** - *(スイッチ)* デフォルトでは、スクリプトはサイレントに動作し、エラーが発生した場合のみ出力を表示します。`-v` が設定されている場合、関数はそのオペレーション全体にわたってステータスを表示します。

## ファイル
<a name="cli-services-ec2-instance-type-script-files.title"></a>

**`change_ec2_instance_type.sh`**  
メインスクリプトファイルには、次のタスクを実行する `change_ec2_instance_type()` 関数が含まれています。  
+ 指定された Amazon EC2 インスタンスが存在することを検証する。
+ `-f` が選択されていない限り、インスタンスを停止する前にユーザーに警告を表示します。
+ インスタンスタイプを変更する。
+ `-r` を設定した場合、インスタンスを再起動し、インスタンスが実行中であることを確認します。
`[change\$1ec2\$1instance\$1type.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/ec2/change-ec2-instance-type/change_ec2_instance_type.sh)` のコードを *GitHub* で表示します。

**`test_change_ec2_instance_type.sh`**  
ファイル `test_change_ec2_instance_type.sh` のスクリプトは、`change_ec2_instance_type` 関数のさまざまなコードパスをテストします。テストスクリプトのすべてのステップが正しく動作する場合、テストスクリプトは作成したすべてのリソースを削除します。  
テストスクリプトは、次のパラメータを使用して実行できます。  
+ **-v** - *(スイッチ)* 各テストは、実行時に合格/失敗ステータスを示します。デフォルトでは、テストはサイレントに実行され、出力には最終的な合格/失敗ステータスのみが含まれます。
+ **-i** - *(スイッチ)* 各テストの後にスクリプトが一時停止し、各ステップの中間結果を参照できるようにします。Amazon EC2 コンソールを使用して、インスタンスの現在のステータスを調べることができます。プロンプトで *Enter* キーを押すと、スクリプトは次のステップに進みます。
`[test\$1change\$1ec2\$1instance\$1type.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/ec2/change-ec2-instance-type/test_change_ec2_instance_type.sh)` のコードを *GitHub* で表示します。

**`awsdocs_general.sh`**  
スクリプトファイル `awsdocs_general.sh` には、AWS CLI の高度な例全体で使用される汎用関数が格納されています。  
`[awsdocs\$1general.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/ec2/change-ec2-instance-type/awsdocs_general.sh)` のコードを *GitHub* で表示します。

## リファレンス
<a name="cli-services-ec2-instance-type-script-references"></a>

**AWS CLI リファレンス:**
+ `[aws ec2](https://docs.aws.amazon.com/cli/v1/reference/ec2/index.html)`
+ `[aws ec2 describe-instances](https://docs.aws.amazon.com/cli/v1/reference/ec2/describe-instances.html)`
+ `[aws ec2 modify-instance-attribute](https://docs.aws.amazon.com/cli/v1/reference/ec2/modify-instance-attribute.html)`
+ `[aws ec2 start-instances](https://docs.aws.amazon.com/cli/v1/reference/ec2/start-instances.html)`
+ `[aws ec2 stop-instances](https://docs.aws.amazon.com/cli/v1/reference/ec2/stop-instances.html)`
+ `[aws ec2 wait instance-running](https://docs.aws.amazon.com/cli/v1/reference/ec2/wait/instance-running.html)`
+ `[aws ec2 wait instance-stopped](https://docs.aws.amazon.com/cli/v1/reference/ec2/wait/instance-stopped.html)`

**その他のリファレンス:**
+ [Amazon Elastic Compute Cloud のドキュメント](https://docs.aws.amazon.com/ec2/)
+ AWS SDK および AWS CLI のコード例を表示したり、提供したりするには、*GitHub* の [AWS コード例のリポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/)を参照してください。

# Using Amazon Glacier in the AWS CLI
<a name="cli-services-glacier"></a>


| Amazon Glacier について | 
| --- | 
|    | 

このトピックでは、Amazon Glacier の一般的なタスクを実行する AWS CLI コマンドの例について説明します。これらの例は、AWS CLI を使用して大きなファイルを Amazon Glacier にアップロードする方法を示しています。これは、ファイルを小さなパーツに分割し、コマンドラインからアップロードすることで実行されます。

AWS Command Line Interface (AWS CLI) を使用して、Amazon Glacier の機能にアクセスできます。Amazon Glacier 用の AWS CLI コマンドを一覧表示するには、次のコマンドを使用します。

```
aws glacier help
```

**注記**  
コマンドリファレンスおよびその他の例については、「*AWS CLI リファレンスガイド*」の「`[aws glacier](https://docs.aws.amazon.com/cli/latest/reference/glacier/index.html)`」を参照してください。

**Topics**
+ [前提条件](#cli-services-glacier-prereqs)
+ [Amazon Glacier ボールトを作成します。](#cli-services-glacier-vault)
+ [ファイルのアップロードの準備](#cli-services-glacier-prep)
+ [マルチパートアップロードの開始とファイルのアップロード](#cli-services-glacier-initiate)
+ [アップロードの完了](#cli-services-glacier-complete)
+ [リソース](#cli-services-glacier-resources)

## 前提条件
<a name="cli-services-glacier-prereqs"></a>

`glacier` コマンドを実行するには、次のことが必要です。
+ AWS CLI をインストールして設定します。詳細については、「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」および「」を参照してください。[Authentication and access credentials for the AWS CLI](cli-chap-authentication.md)
+ このチュートリアルでは、Linux や macOS など、Unix 互換オペレーティングシステムに通常プリインストールされている、いくつかのコマンドラインツールを使用します。Windows ユーザーは、[Cygwin](https://www.cygwin.com/) をインストールし、Cygwin ターミナルからコマンドを実行することで、同じツールを使用できます。同じ機能を実行する Windows のネイティブコマンドとユーティリティはそのように注記されています。

## Amazon Glacier ボールトを作成します。
<a name="cli-services-glacier-vault"></a>

`[create-vault](https://docs.aws.amazon.com/cli/latest/reference/glacier/create-vault.html)` コマンドを使用してボールトを作成します。

```
$ aws glacier create-vault --account-id - --vault-name myvault
{
    "location": "/123456789012/vaults/myvault"
}
```

**注記**  
すべての Amazon Glacier コマンドではアカウント ID をパラメータが必須です。現在のアカウントを使用するには、ハイフン文字を使用します (`--account-id -`)。

## ファイルのアップロードの準備
<a name="cli-services-glacier-prep"></a>

テストアップロード用のファイルを作成します。以下のコマンドは、ちょうど 3 MiB のランダムデータを含む *largefile* という名前のファイルを作成します。

**Linux または macOS**

```
$ dd if=/dev/urandom of=largefile bs=3145728 count=1
1+0 records in
1+0 records out
3145728 bytes (3.1 MB) copied, 0.205813 s, 15.3 MB/s
```

`dd` は、多数のバイトを入力ファイルから出力ファイルにコピーするユーティリティです。前の例では、ランダムデータのソースとしてシステムデバイスファイル `/dev/urandom` を使用します。`fsutil` は Windows で同様の関数を実行します。

**Windows**:

```
C:\> fsutil file createnew largefile 3145728
File C:\temp\largefile is created
```

次に、ファイルスプリッタを使用してファイルを 1 MiB (1,048,576 バイト) のチャンクに分割します。

```
$ split -b 1048576 --verbose largefile chunk
creating file `chunkaa'
creating file `chunkab'
creating file `chunkac'
```

## マルチパートアップロードの開始とファイルのアップロード
<a name="cli-services-glacier-initiate"></a>

`[initiate-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html)` コマンドを使用して、Amazon Glacier でマルチパートアップロードを作成します。

```
$ aws glacier initiate-multipart-upload --account-id - --archive-description "multipart upload test" --part-size 1048576 --vault-name myvault
{
    "uploadId": "19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ",
    "location": "/123456789012/vaults/myvault/multipart-uploads/19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"
}
```

Amazon Glacier では、マルチパートアップロードを設定するために各パートのサイズ (バイト) (この例では 1 MiB)、ボールト名、アカウント ID が必要です。オペレーションが完了すると、AWS CLI によってアップロード ID が出力されます。後で使用できるように、アップロード ID をシェル変数に保存します。

**Linux または macOS**

```
$ UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"
```

**Windows**:

```
C:\> set UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"
```

次に、`[upload-multipart-part](https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html)` コマンドを使用して 3 つのパートをそれぞれアップロードします。

```
$ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkaa --range 'bytes 0-1048575/*' --account-id - --vault-name myvault
{
    "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553"
}
$ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkab --range 'bytes 1048576-2097151/*' --account-id - --vault-name myvault
{
    "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553"
}
$ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkac --range 'bytes 2097152-3145727/*' --account-id - --vault-name myvault
{
    "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553"
}
```

**注記**  
前の例では、ドル記号 (`$`) を使用して Linux の `UPLOADID` シェル変数の内容を参照しています。Windows コマンドラインでは、変数名の両側にパーセント記号 (%) を使用します (例:`%UPLOADID%`)。

Amazon Glacier によって正しい順序で再構成されるように、アップロード時には各パートのバイト範囲を指定する必要があります。各部分は 1,048,576 バイトであるため、1 番目の部分は 0-1048575、2 番目は 1048576-2097151、3 番目は 2097152-3145727 に配置されます。

## アップロードの完了
<a name="cli-services-glacier-complete"></a>

Amazon Glacier では、アップロードされたすべてのパーツが完全な状態で AWS に到達したことを確認するために、元のファイルの木構造ハッシュが必要になります。

木構造ハッシュを計算するには、ファイルを 1 MiB のパーツに分割し、各部分のバイナリ SHA-256 ハッシュを計算する必要があります。次に、ハッシュのリストをペアに分割し、各ペアの 2 つのバイナリハッシュを結合して、結果のハッシュを取得します。ハッシュが 1 つだけになるまでこのプロセスを繰り返します。レベルのいずれかに奇数のハッシュがある場合は、変更せずに次のレベルに昇格させます。

コマンドラインユーティリティを使用して木構造ハッシュを正しく計算するために重要なことは、各ハッシュをバイナリ形式で保存し、最後のステップでのみ 16 進数に変換することです。木構造で 16 進数バージョンのハッシュを結合またはハッシュすると、正しい結果を得ることができません。

**注記**  
Windows ユーザーは、`type` の代わりに `cat` コマンドを使用できます。Windows 用の OpenSSL は [OpenSSL.org](https://www.openssl.org/source/) で入手できます。

**木構造ハッシュを計算するには**

1. 元のファイルを分割していない場合は、1 MiB のパーツに分割します。

   ```
   $ split --bytes=1048576 --verbose largefile chunk
   creating file `chunkaa'
   creating file `chunkab'
   creating file `chunkac'
   ```

1. 各チャンクのバイナリ SHA-256 ハッシュを計算して保存します。

   ```
   $ openssl dgst -sha256 -binary chunkaa > hash1
   $ openssl dgst -sha256 -binary chunkab > hash2
   $ openssl dgst -sha256 -binary chunkac > hash3
   ```

1. 最初の 2 つのハッシュ結合を実行し、結果のバイナリハッシュを取得します。

   ```
   $ cat hash1 hash2 > hash12
   $ openssl dgst -sha256 -binary hash12 > hash12hash
   ```

1. チャンク `aa` および `ab` の親ハッシュをチャンク `ac` のハッシュと結合して結果をハッシュします。今回は 16 進数で出力します。シェル変数に結果を保存します。

   ```
   $ cat hash12hash hash3 > hash123
   $ openssl dgst -sha256 hash123
   SHA256(hash123)= 9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67
   $ TREEHASH=9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67
   ```

最後に、`[complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html)` コマンドを使用してアップロードを完了します。このコマンドは、元のファイルのサイズ (バイト単位)、最終的な 16 進数の木構造ハッシュ値、およびアカウント ID とボールト名を使用します。

```
$ aws glacier complete-multipart-upload --checksum $TREEHASH --archive-size 3145728 --upload-id $UPLOADID --account-id - --vault-name myvault
{
    "archiveId": "d3AbWhE0YE1m6f_fI1jPG82F8xzbMEEZmrAlLGAAONJAzo5QdP-N83MKqd96Unspoa5H5lItWX-sK8-QS0ZhwsyGiu9-R-kwWUyS1dSBlmgPPWkEbeFfqDSav053rU7FvVLHfRc6hg",
    "checksum": "9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67",
    "location": "/123456789012/vaults/myvault/archives/d3AbWhE0YE1m6f_fI1jPG82F8xzbMEEZmrAlLGAAONJAzo5QdP-N83MKqd96Unspoa5H5lItWX-sK8-QS0ZhwsyGiu9-R-kwWUyS1dSBlmgPPWkEbeFfqDSav053rU7FvVLHfRc6hg"
}
```

`[describe-vault](https://docs.aws.amazon.com/cli/latest/reference/glacier/describe-vault.html)` コマンドを使用して、ボールトのステータスを確認することもできます。

```
$ aws glacier describe-vault --account-id - --vault-name myvault
{
    "SizeInBytes": 3178496,
    "VaultARN": "arn:aws:glacier:us-west-2:123456789012:vaults/myvault",
    "LastInventoryDate": "2018-12-07T00:26:19.028Z",
    "NumberOfArchives": 1,
    "CreationDate": "2018-12-06T21:23:45.708Z",
    "VaultName": "myvault"
}
```

**注記**  
ボールトのステータスは約 1 日 1 回更新されます。詳細については、「[Glacier のボールトに関する各種操作](https://docs.aws.amazon.com/amazonglacier/latest/dev/working-with-vaults.html)」を参照してください。

これで、作成したチャンクおよびハッシュファイルを安全に削除できます。

```
$ rm chunk* hash*
```

マルチパートアップロードの詳細については、「[Amazon Glacier デベロッパーガイド](https://docs.aws.amazon.com/amazonglacier/latest/dev/uploading-archive-mpu.html)」の「[パート単位での大きなアーカイブのアップロード](https://docs.aws.amazon.com/amazonglacier/latest/dev/checksum-calculations.html)」および「*チェックサムの計算*」を参照してください。

## リソース
<a name="cli-services-glacier-resources"></a>

**AWS CLI リファレンス:**
+ `[aws glacier](https://docs.aws.amazon.com/cli/latest/reference/glacier/index.html)`
+ `[aws glacier complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html)`
+ `[aws glacier create-vault](https://docs.aws.amazon.com/cli/latest/reference/glacier/create-vault.html)`
+ `[aws glacier describe-vault](https://docs.aws.amazon.com/cli/latest/reference/glacier/describe-vault.html)`
+ `[aws glacier initiate-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html)`

**サービスリファレンス:**
+ [Amazon Glacier デベロッパーガイド](https://docs.aws.amazon.com/amazonglacier/latest/dev/)
+ Amazon Glacier デベロッパーガイド、「[パート単位での大きなアーカイブのアップロード](https://docs.aws.amazon.com/amazonglacier/latest/dev/uploading-archive-mpu.html)」
+ Amazon Glacier デベロッパーガイド、「[チェックサムの計算](https://docs.aws.amazon.com/amazonglacier/latest/dev/checksum-calculations.html)」
+ Amazon Glacier デベロッパーガイド、「[ボールトに関する各種操作](https://docs.aws.amazon.com/amazonglacier/latest/dev/working-with-vaults.html)」

# Using IAM in the AWS CLI
<a name="cli-services-iam"></a>


| AWS Identity and Access Management のご紹介 | 
| --- | 
|    | 

AWS Command Line Interface (AWS CLI) を使用して AWS Identity and Access Management (IAM) の機能にアクセスできます。IAM 用の AWS CLI コマンドを一覧表示するには、次のコマンドを使用します。

```
aws iam help
```

このトピックでは、IAM の一般的なタスクを実行する AWS CLI コマンドの例について説明します。

コマンドを実行する前に、デフォルトの認証情報を設定します。詳細については、「[Configuring settings for the AWS CLI](cli-chap-configure.md)」を参照してください。

IAM サービスの詳細については、[AWS Identity and Access Management ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)を参照してください。

**Topics**
+ [IAM ユーザーおよびグループの作成](#cli-services-iam-new-user-group)
+ [ユーザーへの IAM 管理ポリシーのアタッチ](#cli-services-iam-policy)
+ [IAM ユーザーの初期パスワードの設定](#cli-services-iam-set-pw)
+ [IAM ユーザーのアクセスキーの作成](#cli-services-iam-create-creds)

## IAM ユーザーおよびグループの作成
<a name="cli-services-iam-new-user-group"></a>

**グループを作成してそのグループに新しいユーザーを追加するには**

1. グループを作成するには、[https://docs.aws.amazon.com/cli/latest/reference/iam/create-group.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-group.html) コマンドを使用します。

   ```
   $ aws iam create-group --group-name MyIamGroup
   {
       "Group": {
           "GroupName": "MyIamGroup",
           "CreateDate": "2018-12-14T03:03:52.834Z",
           "GroupId": "AGPAJNUJ2W4IJVEXAMPLE",
           "Arn": "arn:aws:iam::123456789012:group/MyIamGroup",
           "Path": "/"
       }
   }
   ```

1. ユーザーを作成するには、[https://docs.aws.amazon.com/cli/latest/reference/iam/create-user.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-user.html) コマンドを使用します。

   ```
   $ aws iam create-user --user-name MyUser
   {
       "User": {
           "UserName": "MyUser",
           "Path": "/",
           "CreateDate": "2018-12-14T03:13:02.581Z",
           "UserId": "AIDAJY2PE5XUZ4EXAMPLE",
           "Arn": "arn:aws:iam::123456789012:user/MyUser"
       }
   }
   ```

1. ユーザーをグループに追加するには、[https://docs.aws.amazon.com/cli/latest/reference/iam/add-user-to-group.html](https://docs.aws.amazon.com/cli/latest/reference/iam/add-user-to-group.html) コマンドを使用します。

   ```
   $ aws iam add-user-to-group --user-name MyUser --group-name MyIamGroup
   ```

1. `MyIamGroup` グループが `MyUser` を含んでいることを確認するには、[https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html) コマンドを使用します。

   ```
   $ aws iam get-group --group-name MyIamGroup
   {
       "Group": {
           "GroupName": "MyIamGroup",
           "CreateDate": "2018-12-14T03:03:52Z",
           "GroupId": "AGPAJNUJ2W4IJVEXAMPLE",
           "Arn": "arn:aws:iam::123456789012:group/MyIamGroup",
           "Path": "/"
       },
       "Users": [
           {
               "UserName": "MyUser",
               "Path": "/",
               "CreateDate": "2018-12-14T03:13:02Z",
               "UserId": "AIDAJY2PE5XUZ4EXAMPLE",
               "Arn": "arn:aws:iam::123456789012:user/MyUser"
           }
       ],
       "IsTruncated": "false"
   }
   ```

## ユーザーへの IAM 管理ポリシーのアタッチ
<a name="cli-services-iam-policy"></a>

この例のポリシーは、ユーザーに「Power User Access」を付与します。

**IAM 管理ポリシーをユーザーにアタッチするには**

1. アタッチするポリシーの Amazon リソースネーム (ARN) を決定します。次のコマンドでは、`list-policies` を使用して、`PowerUserAccess` という名前のポリシーの ARN を検索します。次に、その ARN を環境変数に格納します。

   ```
   $ export POLICYARN=$(aws iam list-policies --query 'Policies[?PolicyName==`PowerUserAccess`].{ARN:Arn}' --output text)       ~
   $ echo $POLICYARN
   arn:aws:iam::aws:policy/PowerUserAccess
   ```

1. ポリシーをアタッチするには、[https://docs.aws.amazon.com/cli/latest/reference/iam/attach-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-user-policy.html) コマンドを使用し、ポリシー ARN を保持している環境変数を参照します。

   ```
   $ aws iam attach-user-policy --user-name MyUser --policy-arn $POLICYARN
   ```

1. ポリシーがユーザーにアタッチされたことを確認するには、[https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-user-policies.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-user-policies.html) コマンドを実行します。

   ```
   $ aws iam list-attached-user-policies --user-name MyUser
   {
       "AttachedPolicies": [
           {
               "PolicyName": "PowerUserAccess",
               "PolicyArn": "arn:aws:iam::aws:policy/PowerUserAccess"
           }
       ]
   }
   ```

詳細については、「[アクセス管理リソース](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-additional-resources.html)」を参照してください。このトピックでは、アクセス権限とポリシーの概要へのリンクと、Amazon S3、Amazon EC2、およびその他のサービスにアクセスするためのポリシーの例へのリンクを示しています。

## IAM ユーザーの初期パスワードの設定
<a name="cli-services-iam-set-pw"></a>

次のコマンドは、`[create-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/create-login-profile.html)` を使用して指定されたユーザーの初期パスワードを設定します。初回サインイン時、ユーザーは自分だけが知っているパスワードに変更するように求められます。

```
$ aws iam create-login-profile --user-name MyUser --password My!User1Login8P@ssword --password-reset-required
{
    "LoginProfile": {
        "UserName": "MyUser",
        "CreateDate": "2018-12-14T17:27:18Z",
        "PasswordResetRequired": true
    }
}
```

`update-login-profile` コマンドを使用して、ユーザーのパスワードを変更することができます。

```
$ aws iam update-login-profile --user-name MyUser --password My!User1ADifferentP@ssword
```

## IAM ユーザーのアクセスキーの作成
<a name="cli-services-iam-create-creds"></a>

[https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html) コマンドを使用して、ユーザーのアクセスキーを作成することができます。アクセスキーは、アクセスキー ID とシークレットキーで構成される一連のセキュリティ認証情報です。

ユーザーが作成できるアクセスキーは一度に 2 つのみです。3 番目のセットを作成しようとすると、コマンドは `LimitExceeded` エラーを返します。

```
$ aws iam create-access-key --user-name MyUser
{
    "AccessKey": {
        "UserName": "MyUser",
        "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "Status": "Active",
        "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
        "CreateDate": "2018-12-14T17:34:16Z"
    }
}
```

[https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html) コマンドを使用して、ユーザーのアクセスキーを削除します。アクセスキー ID を使用して、削除するアクセスキーを指定します。

```
$ aws iam delete-access-key --user-name MyUser --access-key-id AKIAIOSFODNN7EXAMPLE
```

# AWS CLI での Amazon S3 の使用
<a name="cli-services-s3"></a>


| Amazon Simple Storage Service (Amazon S3) のご紹介 | 
| --- | 
|    | 

AWS Command Line Interface (AWS CLI) を使用して、Amazon Simple Storage Service (Amazon S3) の機能にアクセスできます。Amazon S3 は、高度にスケーラブルで耐久性のあるオブジェクトストレージサービスです。Amazon S3 は実質的に無制限のストレージ容量を提供するように設計されているため、幅広いデータストレージと管理のニーズに最適なソリューションです。

Amazon S3 では、小さなファイルから大きなデータセットまで、任意の量のデータをオブジェクトの形式で保存および取得できます。各オブジェクトはバケットと呼ばれるコンテナに保存されます。これは、AWS マネジメントコンソールを通じて、または AWS SDK、ツール、および AWS CLI を使ってプログラム的にアクセスおよび管理できます。

基本的なストレージを含む Amazon S3 には、ライフサイクル管理、バージョニング、スケーラビリティ、セキュリティなどのさまざまな機能も搭載されています。これらは他の AWS のサービスと統合されているため、ニーズに合わせて拡張できるクラウドベースのソリューションを構築できます。

AWS CLI は、Amazon S3 へのアクセスのために 2 つの階層のコマンドを提供します。
+ **s3** – オブジェクトおよびバケットの作成、操作、削除、および同期など、一般的なタスクの実行を簡素化する AWS CLI のためのカスタムの高レベルコマンドです。
+ **s3api**— Amazon S3 API すべてのオペレーションへの直接アクセスを公開することで、高度なオペレーションを実行できます。

**Topics**
+ [Using high-level (s3) commands in the AWS CLI](cli-services-s3-commands.md)
+ [Using API-Level (s3api) commands in the AWS CLI](cli-services-s3-apicommands.md)
+ [Scripting example for the Amazon S3 bucket lifecycle in the AWS CLI](cli-services-s3-lifecycle-example.md)

# Using high-level (s3) commands in the AWS CLI
<a name="cli-services-s3-commands"></a>

このトピックでは、AWS CLI で [https://docs.aws.amazon.com/cli/latest/reference/s3/index.html](https://docs.aws.amazon.com/cli/latest/reference/s3/index.html) コマンドを使用して、Amazon S3 のバケットとオブジェクトを管理するために使用できるコマンドの一部について説明します。このトピックで説明されていないコマンドおよびその他のコマンドの例については、「*AWS CLI リファレンス*」「[https://docs.aws.amazon.com/cli/latest/reference/s3/index.html](https://docs.aws.amazon.com/cli/latest/reference/s3/index.html)」コマンドを参照してください。

高レベル `aws s3` コマンドを使用すると、Amazon S3 オブジェクトの管理が容易になります。これらのコマンドにより、Amazon S3 のコンテンツの管理をそれ自体の内部およびローカルディレクトリ内で管理することができます。

**Topics**
+ [前提条件](#using-s3-commands-prereqs)
+ [開始する前に](#using-s3-commands-before)
+ [バケットを作成する](#using-s3-commands-managing-buckets-creating)
+ [バケットとオブジェクトの一覧表示](#using-s3-commands-listing-buckets)
+ [バケットの削除](#using-s3-commands-delete-buckets)
+ [オブジェクトの削除](#using-s3-commands-delete-objects)
+ [オブジェクトの移動](#using-s3-commands-managing-objects-move)
+ [オブジェクトのコピー](#using-s3-commands-managing-objects-copy)
+ [オブジェクトの同期](#using-s3-commands-managing-objects-sync)
+ [s3 コマンドでよく使用されるオプション](#using-s3-commands-managing-objects-param)
+ [リソース](#using-s3-commands-managing-buckets-references)

## 前提条件
<a name="using-s3-commands-prereqs"></a>

`s3` コマンドを実行するには、次のことが必要です。
+ AWS CLI をインストールして設定します。詳細については、「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」および「」を参照してください。[Authentication and access credentials for the AWS CLI](cli-chap-authentication.md)
+ 使用するプロファイルには、例によって実行される AWS オペレーションに対する許可が必要です。
+ Amazon S3 の以下の用語を解説します。
  + **バケット** - トップレベルの Amazon S3 フォルダ。
  + **プレフィックス** - バケット内の Amazon S3 フォルダ。
  + **オブジェクト** - Amazon S3 バケットでホストされているすべてのアイテム。

## 開始する前に
<a name="using-s3-commands-before"></a>

このセクションでは、`aws s3` コマンドを使用する前の注意事項をいくつか示します。

### 大容量オブジェクトのアップロード
<a name="using-s3-commands-before-large"></a>

`aws s3` コマンドを使用して大きなオブジェクトを Amazon S3 バケットにアップロードする場合、AWS CLI は自動的にマルチパートアップロードを実行します。これらの `aws s3` コマンドを使用した場合、失敗したアップロードを再開することはできません。

マルチパートアップロードがタイムアウトして失敗した場合、または AWS CLI で手動でキャンセルした場合、AWS CLI はアップロードを停止し、作成されたすべてのファイルをクリーンアップします。この処理には数分かかることもあります。

マルチパートアップロードまたはクリーンアッププロセスが kill コマンドまたはシステム障害によってキャンセルされた場合、作成されたファイルは Amazon S3 バケットに残ります。マルチパートアップロードをクリーンアップするには、[s3api abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html) コマンドを使用します。

### マルチパートコピーのファイルプロパティとタグ
<a name="using-s3-commands-before-tags"></a>

1 つの Amazon S3 バケットの場所から別の Amazon S3 バケットの場所にファイルをコピーするために `aws s3` 名前空間で AWS CLI バージョン 1 のコマンドバージョンを使用しており、そのオペレーションが[マルチパートコピー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CopyingObjctsMPUapi.html)を使用する場合は、コピー先にソースオブジェクトのファイルプロパティがコピーされません。

デフォルトで、マルチパートコピーを実行する `s3` 名前空間の AWS CLI バージョン 2 のコマンドは、ソースのすべてのタグと、プロパティのセット (`content-type`、`content-language`、`content-encoding`、`content-disposition`、`cache-control`、`expires`) をコピー先に転送します。

これにより、AWS CLI バージョン 1 を使用する場合には行われなかった追加の AWS API コールが Amazon S3 エンドポイントに対して実行されることになる場合があります。これには、`HeadObject`、`GetObjectTagging`、および `PutObjectTagging` が含まれます。

AWS CLI バージョン 2 コマンドでこのデフォルト動作を変更する必要がある場合は、`--copy-props` パラメータを使用して次のオプションのいずれかを指定します。
+ **default ** - デフォルト値。コピーに、ソースオブジェクトにアタッチされたすべてのタグと、マルチパートコピー以外に使用される `--metadata-directive` パラメータの次のプロパティが含まれることを指定します。`content-type`、`content-language`、`content-encoding`、`content-disposition`、`cache-control`, `expires`、`metadata`。
+ **metadata-directive ** - `--metadata-directive` マルチパートコピー以外に使用されるパラメータによって包含されるプロパティのみがコピーに含まれることを指定します。タグはコピーされません。
+ **none** - コピーにソースオブジェクトのプロパティを含みません。

## バケットを作成する
<a name="using-s3-commands-managing-buckets-creating"></a>

[https://docs.aws.amazon.com/cli/latest/reference/s3/mb.html](https://docs.aws.amazon.com/cli/latest/reference/s3/mb.html) コマンドを使用して、バケットを作成します。バケット名は***グローバル***に一意で (Amazon S3 全体で一意)、DNS に準拠している必要があります。

バケット名には、小文字の英文字、数字、ハイフン、およびピリオドを使用することができます。バケット名の先頭と末尾は文字または数値とし、ハイフンまたは別のピリオドの横にピリオドを使用することはできません。

**構文**

```
$ aws s3 mb <target> [--options]
```

### s3 mb の例
<a name="using-s3-commands-managing-buckets-creating-examples"></a>

次の例では、`s3://amzn-s3-demo-bucket` バケットを作成します。

```
$ aws s3 mb s3://amzn-s3-demo-bucket
```

## バケットとオブジェクトの一覧表示
<a name="using-s3-commands-listing-buckets"></a>

バケット、フォルダ、オブジェクトのいずれかを一覧表示するには、[https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html) コマンドを使用します。ターゲットまたはオプションを指定せずにコマンドを使用すると、すべてのバケットが一覧表示されます。

**構文**

```
$ aws s3 ls <target> [--options]
```

このコマンドで使用するいくつかの一般的なオプションと例については、「[s3 コマンドでよく使用されるオプション](#using-s3-commands-managing-objects-param)」を参照してください。使用可能なオプションの完全なリストについては、「*AWS CLI コマンドリファレンス*」の「[https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html)」を参照してください。

### s3 ls の例
<a name="using-s3-commands-managing-objects-list-examples"></a>

次の例では、すべての Amazon S3 バケットを一覧表示します。

```
$ aws s3 ls
2018-12-11 17:08:50 amzn-s3-demo-bucket1
2018-12-14 14:55:44 amzn-s3-demo-bucket2
```

次のコマンドでは、バケット内のすべてのオブジェクトとプレフィックスを一覧表示します。この出力例では、プレフィックス `example/` 内に `MyFile1.txt` という名前のファイル が 1 つあります。

```
$ aws s3 ls s3://amzn-s3-demo-bucket
                           PRE example/
2018-12-04 19:05:48          3 MyFile1.txt
```

コマンドに含めることによって、出力を特定のプレフィックスに絞り込むことができます。次のコマンドでは、*bucket-name/example/* 内のオブジェクトを一覧表示します (つまり、プレフィックス *example/* でフィルタリングされた、*bucket-name* 内のオブジェクトを表示します)。

```
$ aws s3 ls s3://amzn-s3-demo-bucket/example/
2018-12-06 18:59:32          3 MyFile1.txt
```

特定のリージョンのバケットとオブジェクトのみを表示するには、`--region` オプションを使用します。

```
$ aws s3 ls --region us-east-2
2018-12-06 18:59:32          3 MyFile1.txt
```

バケットとオブジェクトのリストが大きい場合は、`--max-items` または `--page-size` オプションを使用して結果をページ分割できます。`--max-items` オプションは 1 回の呼び出しで返されるバケットとオブジェクトの合計数を制限し、`--page-size` オプションはそのうちの 1 ページに表示される数を制限します。

```
$ aws s3 ls --max-items 100 --page-size 10
```

ページ分割の詳細については、「[--page-size パラメータの使用方法](cli-usage-pagination.md#cli-usage-pagination-pagesize)」および「[--max-items パラメータの使用方法](cli-usage-pagination.md#cli-usage-pagination-maxitems)」を参照してください。

## バケットの削除
<a name="using-s3-commands-delete-buckets"></a>

バケットを削除するには、[https://docs.aws.amazon.com/cli/latest/reference/s3/rb.html](https://docs.aws.amazon.com/cli/latest/reference/s3/rb.html) コマンドを使用します。

**構文**

```
$ aws s3 rb <target> [--options]
```

### s3 rb の例
<a name="using-s3-commands-removing-buckets-examples"></a>

次の例では、`s3://amzn-s3-demo-bucket` バケットを削除します。

```
$ aws s3 rb s3://amzn-s3-demo-bucket
```

デフォルトでは、オペレーションが成功するにはバケットが空である必要があります。空でないバケットを削除するには、`--force` オプションを含める必要があります。以前に削除されたが保持されているオブジェクトを含む、バージョニングされたバケットを使用している場合、このコマンドでバケットを削除することは*できません*。すべての内容を削除しておく必要があります。

次の例では、バケット内のすべてのオブジェクトとプレフィックスを削除し、さらにバケット自体を削除します。

```
$ aws s3 rb s3://amzn-s3-demo-bucket --force
```

## オブジェクトの削除
<a name="using-s3-commands-delete-objects"></a>

バケット内またはローカルディレクトリ内のオブジェクトを削除するには、[https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html](https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html) コマンドを使用します。

**構文**

```
$ aws s3 rm  <target> [--options]
```

このコマンドで使用するいくつかの一般的なオプションと例については、「[s3 コマンドでよく使用されるオプション](#using-s3-commands-managing-objects-param)」を参照してください。オプションの完全なリストについては、「*AWS CLI コマンドリファレンス*」の「[https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html](https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html)」を参照してください。

### s3 rm の例
<a name="using-s3-commands-delete-objects-examples"></a>

以下の例では、`filename.txt` から `s3://amzn-s3-demo-bucket/example` が削除されます。

```
$ aws s3 rm s3://amzn-s3-demo-bucket/example/filename.txt
```

以下の例では、`s3://amzn-s3-demo-bucket/example` オプションを使用して `--recursive` からすべてのオブジェクトが削除されます。

```
$ aws s3 rm s3://amzn-s3-demo-bucket/example --recursive
```

## オブジェクトの移動
<a name="using-s3-commands-managing-objects-move"></a>

バケットまたはローカルディレクトリからオブジェクトを移動するには、[https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html](https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html) コマンドを使用します。`s3 mv` コマンドを使用すると、ソースオブジェクトまたはファイルが指定された宛先にコピーされ、ソースオブジェクトまたはファイルが削除されます。

**構文**

```
$ aws s3 mv <source> <target> [--options]
```

このコマンドで使用するいくつかの一般的なオプションと例については、「[s3 コマンドでよく使用されるオプション](#using-s3-commands-managing-objects-param)」を参照してください。使用可能なオプションの完全なリストについては、「*AWS CLI コマンドリファレンス*」の「[https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html](https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html)」を参照してください。

**警告**  
Amazon S3 ソースまたは宛先 URI で任意のタイプのアクセスポイント ARN またはアクセスポイントエイリアスを使用している場合、ソースと宛先 Amazon S3 URI が異なる基盤となるバケットに対して解決されるように特に注意する必要があります。ソースバケットと宛先バケットが同じ場合、ソースファイルまたはオブジェクトをそれ自体に移動する可能性があるため、ソースファイルまたはオブジェクトが誤って削除される恐れがあります。ソースバケットと宛先バケットが同じでないことを確認するには、`--validate-same-s3-paths` パラメータを使用するか、環境変数 ``AWS_CLI_S3_MV_VALIDATE_SAME_S3_PATHS`` を `true` に設定します。

### s3 mv の例
<a name="using-s3-commands-managing-objects-move-examples"></a>

次の例では、すべてのオブジェクトを `s3://amzn-s3-demo-bucket/example` から `s3://amzn-s3-demo-bucket/` に移動します。

```
$ aws s3 mv s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/
```

次の例では、`s3 mv` コマンドを使用して、ローカルファイルを現在の作業ディレクトリから Amazon S3 バケットに移動します。

```
$ aws s3 mv filename.txt s3://amzn-s3-demo-bucket
```

次の例では、ファイルを Amazon S3 バケットから現在の作業ディレクトリに移動します。`./` では、現在の作業ディレクトリを指定します。

```
$ aws s3 mv s3://amzn-s3-demo-bucket/filename.txt ./
```

## オブジェクトのコピー
<a name="using-s3-commands-managing-objects-copy"></a>

バケットまたはローカルディレクトリからオブジェクトをコピーするには、[https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html) コマンドを使用します。

**構文**

```
$ aws s3 cp <source> <target> [--options]
```

標準入力 (`stdin`) または標準出力 (`stdout`) へのファイルストリーミングには dash パラメータを使用できます。

**警告**  
PowerShellを使用している場合、シェルによって CRLF のエンコーディングが変更されたり、パイプされた入力/出力またはリダイレクトされた出力に CRLF が追加されたりすることがあります。

`s3 cp` コマンドでは、次の構文を使用して、`stdin` から指定先のバケットにファイルストリームをアップロードします。

**構文**

```
$ aws s3 cp - <target> [--options]
```

`s3 cp` コマンドは、次の構文を使用して `stdout` 用の Amazon S3 ファイルストリームをダウンロードします。

**構文**

```
$ aws s3 cp <target> [--options] -
```

このコマンドで使用するいくつかの一般的なオプションと例については、「[s3 コマンドでよく使用されるオプション](#using-s3-commands-managing-objects-param)」を参照してください。オプションの完全なリストについては、「*AWS CLI コマンドリファレンス*」の「[https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html)」を参照してください。

### `s3 cp` の例
<a name="using-s3-commands-managing-objects-copy-examples"></a>

次の例では、すべてのオブジェクトを `s3://amzn-s3-demo-bucket/example` から `s3://amzn-s3-demo-bucket/` にコピーします。

```
$ aws s3 cp s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/
```

次の例では、`s3 cp` コマンドを使用して、現在の作業ディレクトリから Amazon S3 バケットにローカルファイルをコピーします。

```
$ aws s3 cp filename.txt s3://amzn-s3-demo-bucket
```

次の例では、ファイルを Amazon S3 バケットから現在の作業ディレクトリにコピーします (`./` では現在の作業ディレクトリを指定します)。

```
$ aws s3 cp s3://amzn-s3-demo-bucket/filename.txt ./
```

次の例では、echo を使用して「hello world」というテキストを `s3://bucket-name/filename.txt` ファイルにストリームします。

```
$ echo "hello world" | aws s3 cp - s3://amzn-s3-demo-bucket/filename.txt
```

次の例では、`s3://amzn-s3-demo-bucket/filename.txt` ファイルを `stdout` にストリーミングし、その内容をコンソールに出力します。

```
$ aws s3 cp s3://amzn-s3-demo-bucket/filename.txt -
hello world
```

次の例では、`s3://bucket-name/pre` の内容を `stdout` にストリーミングし、`bzip2` コマンドを使用してファイルを圧縮します。この圧縮したファイルを `key.bz2` という名前で `s3://bucket-name` にアップロードします。

```
$ aws s3 cp s3://amzn-s3-demo-bucket/pre - | bzip2 --best | aws s3 cp - s3://amzn-s3-demo-bucket/key.bz2
```

## オブジェクトの同期
<a name="using-s3-commands-managing-objects-sync"></a>

[https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) コマンドはバケットとディレクトリの内容、または 2 つのバケットの内容を同期します。通常、`s3 sync` は欠落しているか古くなったファイルやオブジェクトを、ソースとターゲットの間でコピーします。ただし、`--delete` オプションを指定して、ソースに存在しないファイルまたはオブジェクトをターゲットから削除することもできます。

**構文**

```
$ aws s3 sync <source> <target> [--options]
```

このコマンドで使用するいくつかの一般的なオプションと例については、「[s3 コマンドでよく使用されるオプション](#using-s3-commands-managing-objects-param)」を参照してください。オプションの完全なリストについては、「*AWS CLI コマンドリファレンス*」の「[https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html)」を参照してください。

### s3 sync の例
<a name="using-s3-commands-managing-objects-sync-examples"></a>

次の例では、*amzn-s3-demo-bucket* という名前のバケット内の *path* という名前の Amazon S3 プレフィックスの内容を現在の作業ディレクトリと同期します。

`s3 sync` は、同期先で同じ名前を持つファイルと、サイズや変更時間が異なるファイルを更新します。出力には、同期中に実行された特定のオペレーションが表示されます。このオペレーションでは、サブディレクトリ `MySubdirectory` とその内容を `s3://amzn-s3-demo-bucket/path/MySubdirectory` と再帰的に同期することに注意してください。

```
$ aws s3 sync . s3://amzn-s3-demo-bucket/path
upload: MySubdirectory\MyFile3.txt to s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt
upload: MyFile2.txt to s3://amzn-s3-demo-bucket/path/MyFile2.txt
upload: MyFile1.txt to s3://amzn-s3-demo-bucket/path/MyFile1.txt
```

次の例 (前の例の拡張) では、`--delete` オプションの使用方法を示します。

```
// Delete local file
$ rm ./MyFile1.txt

// Attempt sync without --delete option - nothing happens
$ aws s3 sync . s3://amzn-s3-demo-bucket/path

// Sync with deletion - object is deleted from bucket
$ aws s3 sync . s3://amzn-s3-demo-bucket/path --delete
delete: s3://amzn-s3-demo-bucket/path/MyFile1.txt

// Delete object from bucket
$ aws s3 rm s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt
delete: s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt

// Sync with deletion - local file is deleted
$ aws s3 sync s3://amzn-s3-demo-bucket/path . --delete
delete: MySubdirectory\MyFile3.txt

// Sync with Infrequent Access storage class
$ aws s3 sync . s3://amzn-s3-demo-bucket/path --storage-class STANDARD_IA
```

`--delete` オプションを使用する場合、`--exclude` オプションと `--include` オプションによって、`s3 sync` オペレーション中に削除するファイルやオブジェクトをフィルタリングできます。この場合、パラメータ文字列で、ターゲットディレクトリまたはバケットに関連して、削除から除外するか、削除に含めるファイルを指定する必要があります。例を以下に示します。

```
Assume local directory and s3://amzn-s3-demo-bucket/path currently in sync and each contains 3 files:
MyFile1.txt
MyFile2.rtf
MyFile88.txt
'''

// Sync with delete, excluding files that match a pattern. MyFile88.txt is deleted, while remote MyFile1.txt is not.
$ aws s3 sync . s3://amzn-s3-demo-bucket/path --delete --exclude "path/MyFile?.txt"
delete: s3://amzn-s3-demo-bucket/path/MyFile88.txt
'''

// Sync with delete, excluding MyFile2.rtf - local file is NOT deleted
$ aws s3 sync s3://amzn-s3-demo-bucket/path . --delete --exclude "./MyFile2.rtf"
download: s3://amzn-s3-demo-bucket/path/MyFile1.txt to MyFile1.txt
'''

// Sync with delete, local copy of MyFile2.rtf is deleted
$ aws s3 sync s3://amzn-s3-demo-bucket/path . --delete
delete: MyFile2.rtf
```

## s3 コマンドでよく使用されるオプション
<a name="using-s3-commands-managing-objects-param"></a>

このトピックで説明するコマンドでは、次のオプションがよく使用されます。コマンドで使用できるオプションの完全なリストについては、「[AWS CLI バージョン 2 リファレンスガイド](https://docs.aws.amazon.com/cli/latest/reference/index.html)」で特定のコマンドを参照してください。

**acl**  
`s3 sync` と `s3 cp` では、`--acl` オプションを使用できます。これにより、Amazon S3 にコピーされたファイルのアクセス権限を設定できます。`--acl` オプションは、`private`、`public-read`、および `public-read-write` の値を受け入れます。詳細については、「*Amazon S3 ユーザーガイド*」の「[既定 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl)」を参照してください。  

```
$ aws s3 sync . s3://amzn-s3-demo-bucket/path --acl public-read
```

**exclude**  
`s3 cp`、`s3 mv`、`s3 sync`、`s3 rm` のいずれかのコマンドを使用する場合、`--exclude` オプションまたは `--include` オプションを使用して結果をフィルタリングできます。`--exclude` オプションは、コマンドからオブジェクトのみを除外するようにルールを設定します。各オプションは、指定した順に適用されます。これを次の例で示します。  

```
Local directory contains 3 files:
MyFile1.txt
MyFile2.rtf
MyFile88.txt

// Exclude all .txt files, resulting in only MyFile2.rtf being copied
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt"

// Exclude all .txt files but include all files with the "MyFile*.txt" format, resulting in, MyFile1.txt, MyFile2.rtf, MyFile88.txt being copied
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt"

// Exclude all .txt files, but include all files with the "MyFile*.txt" format, but exclude all files with the "MyFile?.txt" format resulting in, MyFile2.rtf and MyFile88.txt being copied
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt" --exclude "MyFile?.txt"
```

**include**  
`s3 cp`、`s3 mv`、`s3 sync`、`s3 rm` のいずれかのコマンドを使用する場合、`--exclude` オプションまたは `--include` オプションを使用して結果をフィルタリングできます。`--include` オプションは、指定したオブジェクトのみをコマンドに含めるようにルールを設定します。各オプションは、指定した順に適用されます。これを次の例で示します。  

```
Local directory contains 3 files:
MyFile1.txt
MyFile2.rtf
MyFile88.txt

// Include all .txt files, resulting in MyFile1.txt and MyFile88.txt being copied
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt"

// Include all .txt files but exclude all files with the "MyFile*.txt" format, resulting in no files being copied
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt"

// Include all .txt files, but exclude all files with the "MyFile*.txt" format, but include all files with the "MyFile?.txt" format resulting in MyFile1.txt being copied

$ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt" --include "MyFile?.txt"
```

**許可**  
`s3 cp`、`s3 mv`、`s3 sync` の各コマンドには、指定したユーザーやグループにオブジェクトへのアクセス許可を付与できる `--grants` オプションが含まれています。次の構文を使用して、`--grants` オプションをアクセス許可リストに設定します。`Permission`、`Grantee_Type`、`Grantee_ID` を独自の値に置き換えます。  
**構文**  

```
--grants Permission=Grantee_Type=Grantee_ID
         [Permission=Grantee_Type=Grantee_ID ...]
```
各値には以下の要素が含まれます。  
+ *Permission* - 付与されたアクセス許可を指定します。`read`、`readacl`、`writeacl`、`full` のいずれかに設定できます。
+ *Grantee\$1Type* - 被付与者の識別方法を指定します。`uri`、`emailaddress`、`id` のいずれかに設定できます。
+ *Grantee\$1ID* - *Grantee\$1Type* に基づいて被付与者を指定します。
  + `uri` – グループの URI。詳細については、「[被付与者とは](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ACLOverview.html#SpecifyingGrantee)」を参照してください。
  + `emailaddress` – アカウントの E メールアドレス。
  + `id` – アカウントの正規 ID。
Amazon S3 アクセスコントロールの詳細については、「[アクセスコントロール](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingAuthAccess.html)」を参照してください。  
次の例では、バケットにオブジェクトをコピーします。これは、オブジェクトへの `read` アクセス許可を全員に付与し、`full` アクセス許可 (`read`、`readacl`、`writeacl`) を `user@example.com` に関連付けられたアカウントに付与します。  

```
$ aws s3 cp file.txt s3://amzn-s3-demo-bucket/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=user@example.com
```
Amazon S3 にアップロードするオブジェクトについて、デフォルト以外のストレージクラス (`REDUCED_REDUNDANCY` または `STANDARD_IA`) を指定することもできます。そのためには、`--storage-class` オプションを使用します。  

```
$ aws s3 cp file.txt s3://amzn-s3-demo-bucket/ --storage-class REDUCED_REDUNDANCY
```

**no-overwrite**  
`s3 cp`、`s3 mv`、`s3 sync` コマンドには、送信先に既に存在するオブジェクトの上書きを防ぐために使用できる `--no-overwrite` オプションが含まれています。  
次の例では、オブジェクトがローカルディレクトリにまだ存在しない場合にのみ、バケットからローカルディレクトリにオブジェクトをコピーします。  

```
$ aws s3 cp --no-overwrite s3://amzn-s3-demo-bucket/file.txt file.txt
```
以下の例では、ローカルディレクトリからバケットにファイルを再帰的にコピーします。バケットにまだ存在しないファイルのみをコピーします。  

```
$ aws s3 cp --recursive --no-overwrite /path/to/demo-files/ s3://amzn-s3-demo-bucket/demo-files/
```
次の例では、オブジェクトがバケットの送信先ロケーションにまだ存在しない場合にのみ、ローカルディレクトリからバケットにオブジェクトを移動します。  

```
$ aws s3 mv --no-overwrite file.txt s3://amzn-s3-demo-bucket/file.txt
```
次の例では、ローカルディレクトリからバケットにファイルを同期します。送信先バケットにまだ存在しないファイルのみが同期されます。  

```
$ aws s3 sync --no-overwrite /path/to/demo-files/ s3://amzn-s3-demo-bucket/demo-files/
```

**再帰的**  
このオプションを使用すると、指定のディレクトリ内またはプレフィックス内のすべてのファイルやオブジェクトに対してコマンドが実行されます。次の例では、`s3://amzn-s3-demo-bucket/path` とそのすべての内容を削除します。  

```
$ aws s3 rm s3://amzn-s3-demo-bucket/path --recursive
```

## リソース
<a name="using-s3-commands-managing-buckets-references"></a>

**AWS CLI リファレンス:**
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/index.html](https://docs.aws.amazon.com/cli/latest/reference/s3/index.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/mb.html](https://docs.aws.amazon.com/cli/latest/reference/s3/mb.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html](https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/rb.html](https://docs.aws.amazon.com/cli/latest/reference/s3/rb.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html](https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html)

**サービスリファレンス:**
+ 「[Amazon S3 ユーザーガイド](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingBucket.html)」の「*Amazon S3 バケットの操作*」
+ 「[Amazon S3 ユーザーガイド](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingObjects.html)」の「*Amazon S3 オブジェクトの操作*」
+ 「[Amazon S3 ユーザーガイド](https://docs.aws.amazon.com//AmazonS3/latest/userguide/ListingKeysHierarchy.html)」の「*プレフィックスと区切り記号によるキーの階層的なリスト*」
+ 「*Amazon S3 ユーザーガイド*」の「[AWS SDK for .NET (低レベル) を使用した S3 バケットへのマルチパートアップロードの中止](https://docs.aws.amazon.com//AmazonS3/latest/userguide/LLAbortMPUnet.html)」

# Using API-Level (s3api) commands in the AWS CLI
<a name="cli-services-s3-apicommands"></a>

API レベルのコマンド (`s3api` コマンドセットに含まれる) は、Amazon Simple Storage Service (Amazon S3) API への直接アクセスを提供し、高レベルの `s3` コマンドでは公開されていない一部の操作を有効にします。これらのコマンドは、サービスの機能性への API レベルのアクセスを提供する他の AWS サービスに相当します。`s3` コマンドの詳細については、「[Using high-level (s3) commands in the AWS CLI](cli-services-s3-commands.md)」を参照してください。

このトピックでは、Amazon S3 API にマッピングする低レベルコマンドの使用方法を示す例を示します。さらに、各 S3 API コマンドの例については、「[AWS CLI バージョン 2 リファレンスガイド](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html)」の「`s3api`」セクションで参照できます。

**Topics**
+ [前提条件](#cli-services-s3-apicommands-prereqs)
+ [カスタム ACL の適用](#cli-services-s3-apicommands-acls)
+ [ログ記録ポリシーの設定](#cli-services-s3-apicommands-logpol)
+ [リソース](#cli-services-s3-apicommands-resources)

## 前提条件
<a name="cli-services-s3-apicommands-prereqs"></a>

`s3api` コマンドを実行するには、次のことが必要です。
+ AWS CLI をインストールして設定します。詳細については、「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」および「」を参照してください。[Authentication and access credentials for the AWS CLI](cli-chap-authentication.md)
+ 使用するプロファイルには、例によって実行される AWS オペレーションに対する許可が必要です。
+ Amazon S3 の以下の用語を解説します。
  + **バケット** - トップレベルの Amazon S3 フォルダ。
  + **プレフィックス** - バケット内の Amazon S3 フォルダ。
  + **オブジェクト** - Amazon S3 バケットでホストされているすべてのアイテム。

## カスタム ACL の適用
<a name="cli-services-s3-apicommands-acls"></a>

高レベルコマンドでは、`--acl` オプションを使用して、事前定義されたアクセスコントロールリスト (ACL) を Amazon S3 オブジェクトに適用できます。ただし、そのコマンドを使用してバケット全体の ACL を設定することはできません。ただし、```[put-bucket-acl](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-acl.html)` API レベルコマンドを使用することで、これを実行できます。

次の例は、完全なコントロールを 2 人の AWS ユーザー (*user1@example.com* と *user2@example.com*) に付与し、読み取りアクセス許可を everyone に付与する方法を示しています。「everyone」の識別子は、パラメータとして渡す特殊な URI から取得されます。

```
$ aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --grant-full-control 'emailaddress="user1@example.com",emailaddress="user2@example.com"' --grant-read 'uri="http://acs.amazonaws.com/groups/global/AllUsers"'
```

ACL の作成方法の詳細については、*Amazon シンプルストレージサービス API リファレンス*の「[PUT Bucket acl](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTacl.html)」を参照してください。`s3api` など、CLI の `put-bucket-acl` ACL コマンドは、同様の[引数の略記法](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-shorthand.html)を使用します。

## ログ記録ポリシーの設定
<a name="cli-services-s3-apicommands-logpol"></a>

API コマンド `put-bucket-logging` は、バケットのログ記録ポリシーを設定します。

次の例では、AWS ユーザー *user@example.com* にログファイルに対する完全なコントロールが付与され、すべてのユーザーがログファイルに対する読み取り許可を持っています。`put-bucket-acl` コマンドは、Amazon S3 ログ配信システム (URI で指定された) に、バケットへのログの読み取りと書き込みに必要なアクセス許可を付与するためにも必要です。

```
$ aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --grant-read-acp 'URI="http://acs.amazonaws.com/groups/s3/LogDelivery"' --grant-write 'URI="http://acs.amazonaws.com/groups/s3/LogDelivery"'
$ aws s3api put-bucket-logging --bucket amzn-s3-demo-bucket --bucket-logging-status file://logging.json
```

前のコマンドで `logging.json` ファイルの内容は、次のとおりです。

```
{
  "LoggingEnabled": {
    "TargetBucket": "amzn-s3-demo-bucket",
    "TargetPrefix": "amzn-s3-demo-bucketLogs/",
    "TargetGrants": [
      {
        "Grantee": {
          "Type": "AmazonCustomerByEmail",
          "EmailAddress": "user@example.com"
        },
        "Permission": "FULL_CONTROL"
      },
      {
        "Grantee": {
          "Type": "Group",
          "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
        },
        "Permission": "READ"
      }
    ]
  }
}
```

## リソース
<a name="cli-services-s3-apicommands-resources"></a>

**AWS CLI リファレンス:**
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-acl.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-acl.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-logging.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-logging.html)

**サービスリファレンス:**
+ 「[Amazon S3 ユーザーガイド](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingBucket.html)」の「*Amazon S3 バケットの操作*」
+ 「[Amazon S3 ユーザーガイド](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingObjects.html)」の「*Amazon S3 オブジェクトの操作*」
+ 「[Amazon S3 ユーザーガイド](https://docs.aws.amazon.com//AmazonS3/latest/userguide/ListingKeysHierarchy.html)」の「*プレフィックスと区切り記号によるキーの階層的なリスト*」
+ 「*Amazon S3 ユーザーガイド*」の「[AWS SDK for .NET (低レベル) を使用した S3 バケットへのマルチパートアップロードの中止](https://docs.aws.amazon.com//AmazonS3/latest/userguide/LLAbortMPUnet.html)」

# Scripting example for the Amazon S3 bucket lifecycle in the AWS CLI
<a name="cli-services-s3-lifecycle-example"></a>

このトピックでは、AWS Command Line Interface (AWS CLI) を使用した Amazon S3 バケットライフサイクルオペレーション用の bash スクリプトの例を使用します。このスクリプトの例では、一連の [https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html) コマンドを使用しています。シェルスクリプトは、コマンドラインインターフェイスで実行するように設計されたプログラムです。

**Topics**
+ [開始する前に](#cli-services-s3-lifecycle-example-before)
+ [この例について](#cli-services-s3-lifecycle-example-about)
+ [ファイル](#cli-services-s3-lifecycle-example-files)
+ [リファレンス](#cli-services-s3-lifecycle-example-references)

## 開始する前に
<a name="cli-services-s3-lifecycle-example-before"></a>

以下の例を実行する前に、次のことを完了する必要があります。
+ AWS CLI をインストールして設定します。詳細については、「[AWS CLI の最新バージョンのインストールまたは更新](getting-started-install.md)」および「」を参照してください。[Authentication and access credentials for the AWS CLI](cli-chap-authentication.md)
+ 使用するプロファイルには、例によって実行される AWS オペレーションに対する許可が必要です。
+ AWS のベストプラクティスとして、このコードには最小権限を付与するか、タスクの実行に必要な許可のみを付与します。詳細については、*IAM ユーザーガイド*の [最小権限を付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) を参照してください。
+ このコードは、すべての AWS リージョンでテストされているわけではありません。AWS の一部のサービスは、特定のリージョンでのみ利用可能です。詳細については、*AWS 全般のリファレンスガイド*の「[サービスエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」を参照してください。
+ このコードを実行すると、AWS アカウントに料金が請求される場合があります。作業が終了したら、このスクリプトによって作成されたすべてのリソースを確実に削除するのはお客様の責任になります。

Amazon S3 サービスでは、次の用語を使用します。
+ バケット - トップレベルの Amazon S3 フォルダ。
+ プレフィックス - バケット内の Amazon S3 フォルダ。
+ オブジェクト - Amazon S3 バケットでホストされているアイテム。

## この例について
<a name="cli-services-s3-lifecycle-example-about"></a>

この例では、シェルスクリプトファイルの一連の関数を使用して、基本的な Amazon S3 オペレーションを操作する方法を示します。関数は、`bucket-operations.sh` という名前のシェルスクリプトファイルにあります。これらの関数を別のファイルで呼び出すことができます。各スクリプトファイルには、各関数について説明するコメントが含まれています。

各ステップの中間結果を表示するには、`-i` パラメータを指定してスクリプトを実行します。Amazon S3 コンソールを使用して、バケットまたはそのコンテンツの現在のステータスを表示できます。プロンプトで **Enter** キーを押すと、スクリプトは次のステップに進むだけです。

完全な例とダウンロード可能なスクリプトファイルについては、*GitHub* の *AWS コード例のリポジトリ*の「[Amazon S3 Bucket Lifecycle Operations](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/s3/bucket-lifecycle-operations)」を参照してください。

## ファイル
<a name="cli-services-s3-lifecycle-example-files"></a>

サンプルには以下のファイルが含まれています。

**bucket-operations.sh**  
このメインスクリプトファイルは、別のファイルから取得できます。このファイルには、次のタスクを実行する関数が含まれています。  
+ バケットを作成し、それが存在することを検証する
+ ローカルコンピュータからバケットにファイルをコピーする
+ あるバケットの場所から別のバケットの場所にファイルをコピーする
+ バケットの内容の一覧表示
+ バケットからファイルを削除する
+ バケットの削除
`[bucket-operations.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/s3/bucket-lifecycle-operations/bucket_operations.sh)` のコードを *GitHub* で表示します。

**test-bucket-operations.sh**  
シェルスクリプトファイル `test-bucket-operations.sh` は、`bucket-operations.sh` ファイルを取得し、各関数を呼び出すことによって関数を呼び出す方法を示しています。関数を呼び出すと、テストスクリプトは作成したすべてのリソースを削除します。  
`[test-bucket-operations.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/s3/bucket-lifecycle-operations/test_bucket_operations.sh)` のコードを *GitHub* で表示します。

**awsdocs-general.sh**  
スクリプトファイル `awsdocs-general.sh` には、AWS CLI の高度なコード例で使用される汎用関数が格納されています。  
`[awsdocs-general.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/s3/bucket-lifecycle-operations/awsdocs_general.sh)` のコードを *GitHub* で表示します。

## リファレンス
<a name="cli-services-s3-lifecycle-example-references"></a>

**AWS CLI リファレンス:**
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/create-bucket.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-bucket.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-bucket.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-bucket.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/head-bucket.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-bucket.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/list-objects.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-objects.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html)

**その他のリファレンス:**
+ 「[Amazon S3 ユーザーガイド](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingBucket.html)」の「*Amazon S3 バケットの操作*」
+ 「[Amazon S3 ユーザーガイド](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingObjects.html)」の「*Amazon S3 オブジェクトの操作*」
+ AWS SDK および AWS CLI のコード例を表示したり、提供したりするには、*GitHub* の [AWS コード例のリポジトリ](https://github.com/awsdocs/aws-doc-sdk-examples/)を参照してください。

# Accessing Amazon SNS in the AWS CLI
<a name="cli-services-sns"></a>

AWS Command Line Interface (AWS CLI) を使用して、Amazon Simple Notification Service (Amazon SNS) の機能にアクセスできます。Amazon SNS 用の AWS CLI コマンドを一覧表示するには、次のコマンドを使用します。

```
aws sns help
```

コマンドを実行する前に、デフォルトの認証情報を設定します。詳細については、「[Configuring settings for the AWS CLI](cli-chap-configure.md)」を参照してください。

このトピックでは、Amazon SNS の一般的なタスクを実行する AWS CLI コマンドの例について説明します。

**Topics**
+ [トピックの作成](#cli-create-sns-topic)
+ [トピックへのサブスクライブ](#cli-subscribe-sns-topic)
+ [トピックへの発行](#cli-publish-sns-topic)
+ [トピックからサブスクリプションを解除する](#cli-unsubscribe-sns-topic)
+ [トピックの削除](#cli-delete-sns-topic)

## トピックの作成
<a name="cli-create-sns-topic"></a>

トピックを作成するには、[https://docs.aws.amazon.com/cli/latest/reference/sns/create-topic.html](https://docs.aws.amazon.com/cli/latest/reference/sns/create-topic.html) コマンドを使用して、トピックに割り当てる名前を指定します。

```
$ aws sns create-topic --name my-topic
{
    "TopicArn": "arn:aws:sns:us-west-2:123456789012:my-topic"
}
```

レスポンスの `TopicArn` を書き留めます。これは、後でメッセージを発行するために使用します。

## トピックへのサブスクライブ
<a name="cli-subscribe-sns-topic"></a>

トピックをサブスクライブするには、[https://docs.aws.amazon.com/cli/latest/reference/sns/subscribe.html](https://docs.aws.amazon.com/cli/latest/reference/sns/subscribe.html) コマンドを使用します。

次の例では、`email` プロトコルと `notification-endpoint` の E メールアドレスを指定します。

```
$ aws sns subscribe --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic --protocol email --notification-endpoint saanvi@example.com
{
    "SubscriptionArn": "pending confirmation"
}
```

AWS は、`subscribe` コマンドで指定したアドレスに E メールで確認メッセージを送信します。E メールメッセージには、次のようなテキストが含まれています。

```
You have chosen to subscribe to the topic:
arn:aws:sns:us-west-2:123456789012:my-topic
To confirm this subscription, click or visit the following link (If this was in error no action is necessary):
Confirm subscription
```

受信者が **サブスクリプションを確認** リンクをクリックすると、受信者のブラウザに次のような情報を含んだ通知メッセージが表示されます。

```
Subscription confirmed!

You have subscribed saanvi@example.com to the topic:my-topic.

Your subscription's id is:
arn:aws:sns:us-west-2:123456789012:my-topic:1328f057-de93-4c15-512e-8bb22EXAMPLE

If it was not your intention to subscribe, click here to unsubscribe.
```

## トピックへの発行
<a name="cli-publish-sns-topic"></a>

トピックのすべての受信者にメッセージを送信するには、[https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html](https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html) コマンドを使用します。

次の例は、「Hello World\$1」というメッセージを 指定されたトピックのサブスクライバー全員に送信します。

```
$ aws sns publish --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic --message "Hello World!"
{
    "MessageId": "4e41661d-5eec-5ddf-8dab-2c867EXAMPLE"
}
```

この例では、AWS が「Hello World\$1」というテキストが含まれる E メールメッセージを `saanvi@example.com` に送信します。

## トピックからサブスクリプションを解除する
<a name="cli-unsubscribe-sns-topic"></a>

トピックのサブスクリプションを解除し、そのトピックに発行されたメッセージの受信を停止するには、[https://docs.aws.amazon.com/cli/latest/reference/sns/unsubscribe.html](https://docs.aws.amazon.com/cli/latest/reference/sns/unsubscribe.html) コマンドを使用して、購読を解除するトピックの ARN を指定します。

```
$ aws sns unsubscribe --subscription-arn arn:aws:sns:us-west-2:123456789012:my-topic:1328f057-de93-4c15-512e-8bb22EXAMPLE
```

サブスクリプションが正常に解除されたことを確認するには、[https://docs.aws.amazon.com/cli/latest/reference/sns/list-subscriptions.html](https://docs.aws.amazon.com/cli/latest/reference/sns/list-subscriptions.html) コマンドを使用して、ARN がリストに表示されなくなったことを確認します。

```
$ aws sns list-subscriptions
```

## トピックの削除
<a name="cli-delete-sns-topic"></a>

トピックを削除するには、[https://docs.aws.amazon.com/cli/latest/reference/sns/delete-topic.html](https://docs.aws.amazon.com/cli/latest/reference/sns/delete-topic.html) コマンドを実行します。

```
$ aws sns delete-topic --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic
```

AWS によってトピックが正常に削除されたことを確認するには、[https://docs.aws.amazon.com/cli/latest/reference/sns/list-topics.html](https://docs.aws.amazon.com/cli/latest/reference/sns/list-topics.html) コマンドを使用して、トピックがリストに表示されなくなったことを確認します。

```
$ aws sns list-topics
```