AWS CLI での文字列への引用符の使用 - AWS Command Line Interface

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

AWS CLI での文字列への引用符の使用

AWS CLI では、主に、一重引用符と二重引用符の使用方法が 2 つあります。

空白を含む文字列を引用符で囲む

コマンドラインでパラメータ名とその値はスペースで区切ります。文字列値にスペースが埋め込まれている場合は、文字列全体を引用符で囲むことで、AWS CLI によってスペースが値と次のパラメータ名との区切りとして誤って解釈されないようにする必要があります。使用する引用符のタイプは、AWS CLI を実行しているオペレーティングシステムによって異なります。

Linux and macOS

一重引用符 ' ' を使用します。

$ aws ec2 create-key-pair --key-name 'my key pair'

引用符の使用方法の詳細については、使用するシェルのユーザードキュメントを参照してください。

PowerShell

一重引用符 ' ' または二重引用符 " " を使用します。

PS C:\> aws ec2 create-key-pair --key-name 'my key pair'
PS C:\> aws ec2 create-key-pair --key-name "my key pair"

引用符の使用方法の詳細については、Microsoft PowerShell ドキュメントの「About Quoting Rules」を参照してください。

Windows command prompt

二重引用符 " " を使用します。

C:\> aws ec2 create-key-pair --key-name "my key pair"

オプションとして、パラメータ名と値をスペースの代わりに等号 = で区切ることができます。通常、これはパラメータの値がハイフンで始まる場合にのみ必要です。

$ aws ec2 delete-key-pair --key-name=-mykey

文字列内での引用符の使用

文字列に引用符が含まれている場合があり、シェルが正しく動作するためには、引用符のエスケープが必要になることがあります。パラメータ値の一般的なタイプの 1 つとして JSON 文字列があります。JSON 構造内の各要素の名前と値の前後にスペースと二重引用符 " " が含まれているため、これは複雑です。コマンドラインで JSON 形式のパラメータを入力する方法はオペレーティングシステムによって異なります。

Linux and macOS

Linux および macOS で文字列を文字どおりに解釈するには、次の例のように、一重引用符 ' ' を使用して JSON データ構造を囲みます。JSON 文字列に埋め込まれた二重引用符は、文字どおり処理されるため、エスケープする必要はありません。JSON は一重引用符で囲まれているため、文字列内の一重引用符はエスケープする必要があります。このためには、通常は一重引用符 \' の前にバックスラッシュを使用します。

$ aws ec2 run-instances \ --image-id ami-12345678 \ --block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'

引用符の使用方法の詳細については、使用するシェルのユーザードキュメントを参照してください。

PowerShell

一重引用符 ' ' または二重引用符 " " を使用します。

一重引用符 (推奨)

JSON データ構造には二重引用符が含まれているため、一重引用符 ' ' で囲むことをお勧めします。一重引用符を使用する場合は、JSON 文字列に埋め込まれた二重引用符をエスケープする必要はありません。ただし、JSON 構造内では、各一重引用符をバックティック ` でエスケープする必要があります。

PS C:\> aws ec2 run-instances \ --image-id ami-12345678 \ --block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'

二重引用符

二重引用符を使用する場合は、JSON 文字列に埋め込まれた 一重引用符をエスケープする必要はありません。ただし、次の例のように、JSON 構造内で各二重引用符をバックティック ` でエスケープする必要があります。

PS C:\> aws ec2 run-instances \ --image-id ami-12345678 \ --block-device-mappings "[{`"DeviceName`":`"/dev/sdb`",`"Ebs`":{`"VolumeSize`":20,`"DeleteOnTermination`":false,`"VolumeType`":`"standard`"}}]"

引用符の使用方法の詳細については、Microsoft PowerShell ドキュメントの「About Quoting Rules」を参照してください。

Windows command prompt

Windows コマンドプロンプトでは、JSON データ構造を二重引用符 " " で囲む必要があります。また、コマンドプロセッサによって、JSON に埋め込まれた二重引用符が誤って解釈されないようにするには、以下の例のように、JSON データ構造内の各二重引用符 \ をエスケープする (バックスラッシュ " 文字で始める) 必要もあります。

C:\> aws ec2 run-instances \ --image-id ami-12345678 --block-device-mappings "[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]"

最も外側の二重引用符のみエスケープしません。

コマンドラインでより高度な JSON を使用するには、jq のようなコマンドライン JSON プロセッサを使用して JSON 文字列を作成することを検討してください。jq の詳細については、GitHubjq repository を参照してください。