日: 2023年6月6日

  • AWS CLIでエスケープなしのJSONを送信する

    AWS CLIでエスケープなしのJSONを送信する

    AWS CLIを使って作業を行うとき、しばしばJSON文字列を引数として渡す必要があります。しかし、これが難しい場合もあります。特に文字列内にエスケープが必要な文字(バックスラッシュなど)が含まれている場合です。

    今回は、エスケープなしのJSON文字列をAWS CLIに直接渡す方法を紹介します。

    ヒアドキュメントの使用

    ヒアドキュメント(Here Document)は、シェルスクリプトのリダイレクトの一種で、複数行のテキストを直接スクリプト内に記述するための方法です。

    ヒアドキュメント内部では、一部のエスケープシーケンスが解釈されずバックスラッシュがただの文字として扱われます。

    これを利用すると、バックスラッシュを含む文字列をエスケープせずに直接AWS CLIに渡すことが可能になります。

    具体的には、以下のようにします:

    aws sqs send-message --profile your-profile --queue-url "your-queue-url" --message-group-id "your-message-group-id" --message-body "$(cat <<EOF
    {
    "key1": "value1",
    "key2": "value2",
    "key3": "value3"
    }
    EOF
    )
    "

    ここで、

    $(cat <<EOF ... EOF)

    がヒアドキュメントの部分で、これが完全に展開された後で

    aws sqs send-message

    コマンドが実行されます。ヒアドキュメント内のJSON文字列はエスケープなしでそのまま扱われるため、特殊文字を含むパスでも問題なくAWS CLIに渡すことができます。

    まとめ

    AWS CLIでエスケープが必要な文字を含むJSONを扱う際には、ヒアドキュメントが非常に便利です。ヒアドキュメントを使うと、エスケープなしで文字列をそのまま扱うことができるので、コマンドラインでの作業が少し楽になります。

  • SSH ProxyJumpを利用した便利な接続方法

    SSH ProxyJumpを利用した便利な接続方法

    SSHを使用してサーバーに接続する際、中継サーバー(bastionホスト)を経由しなければならない場面は珍しくありません。こ

    の手順は煩わしく、特に同じ設定を繰り返し行う必要がある場合、非効率的に感じるかもしれません。

    そんな時に便利なのがSSHのプロキシジャンプ(ProxyJump)機能です。一度のコマンドで中継サーバーを経由してターゲットサーバーに接続することが可能になります。

    設定は以下のように行います。

    まずは、~/.ssh/configに中継サーバーとターゲットサーバーの設定を記述します。

    Host stg-bastion
    Hostname xxxxxxxx
    IdentityFile ~/.ssh/your_identity_file

    Host target-server
    Hostname xxxxxxxx
    IdentityFile ~/.ssh/your_identity_file
    ProxyJump stg-bastion

    ここでは、stg-bastionという名前の中継サーバーに接続し、そこを経由してtarget-serverという名前のターゲットサーバーに接続します。どちらの接続でも同じIdentityFileが使用されます。

    設定を追加したら、以下のコマンドを実行することで、直接target-serverサーバに接続できます:

    ssh target-server

    この機能を使用することで、SSH接続の作業を大幅に効率化できます。あなたもぜひ試してみてください。

    以上、SSH ProxyJumpを利用した便利な接続方法についての記事でした。参考になれば幸いです。