1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS CloudShellでの対話的操作で手軽にboto3を試すには

Last updated at Posted at 2023-09-22

はじめに

この記事では、AWS CloudShellでPythonのSDK、boto3を対話的に使用する方法を解説します。

CloudShellには、Pythonとboto3がプリインストールされています。さらに、CloudShellはマネージメントコンソールから認証情報を引き継ぐため、boto3に認証情報を明示的に渡す必要がありません。これにより、セットアップが不要です。

また、この手法は、AWSリソースの操作だけでなく、boto3のAPIを試す際にも非常に便利です。

AWS CloudShellとは

AWS CloudShellは、マネージメントコンソールから直接アクセスできる、ブラウザベースのシェル環境です。AWS CLIや各種SDK、その他のシェルユーティリティをプリインストールされた状態で使用することができます。

boto3とは

boto3は、AWS SDKのPython版であり、AWSのリソースにプログラムからアクセスするためのPythonライブラリです。

boto3を対話的に実行する

AWS CloudShellを使用してboto3を対話的に実行する方法は、以下の通りです。

  1. CloudShellの起動

    マネージメントコンソールにログイン後、ヘッダにあるCloudShellのアイコン(>.の形をしています)をクリックします。

  2. Python インタープリタ起動
    シェルが起動したら、Python インタープリタを起動します。

    python3
    

    インタープリタを起動すると、>>> というプロンプトが表示されます。出力例を示します。

    Output
    [cloudshell-user@ip-xx-x-xx-xxx ~]$ python3
    Python 3.7.16 (default, Aug 30 2023, 20:37:53) 
    [GCC 7.3.1 20180712 (Red Hat 7.3.1-15)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 
    

    インタープリタを終了するまでは、Pythonの各種機能とboto3のAPIを対話的に試すことができます。以降のコマンドは、このインタープリタに対して実行します。

    尚、インタープリタは、タブで入力補完が効きます。

  3. boto3インポート
    以下のコマンドを実行してboto3をインポートします。

    import boto3
    
  4. セッション初期化
    boto3のセッションを初期化します。認証情報とリージョンはマネジメントコンソールから引き継がれますが、明示的に指定することも可能です。

    東京リージョンを指定する例です。

    sess = boto3.Session(region_name='ap-northeast-1')
    

    セッション初期化時に認証情報を渡すことも可能ですが、本記事では割愛します。

  5. AWSリソース操作
    セッションが確立されたら、AWSの各種リソースを操作できます。

    セキュリティグループを一覧表示する例です。

    ec2 = sess.client('ec2')
    res = ec2.describe_security_groups()
    print(res)
    
    Output
    {'SecurityGroups': [{'Description': 'for test', 'GroupName': 'test-sg', 'IpPermissions': [], ... 
    

    このようにJSONの出力が見づらい場合は、Pythonのjsonモジュールを使って整形することができます。具体的には、json.dumps()関数のindent引数を利用すると、きれいに整形された形で出力できます。

    import json
    print(json.dumps(res, indent=2))
    
    Output
    {
      "SecurityGroups": [
        {
          "Description": "for test",
          "GroupName": "test-sg",
          "IpPermissions": [],
          "OwnerId": "3328xxxxxxxx",
          "GroupId": "sg-xxxxxxxxxxxxxxxxx",
          "IpPermissionsEgress": [
            {
              "IpProtocol": "-1",
              "IpRanges": [
                {
                  "CidrIp": "172.24.1.1/32",
                  "Description": "allow 172.24.1.1/32"
                }
              ],
              "Ipv6Ranges": [],
              "PrefixListIds": [],
              "UserIdGroupPairs": []
            }
          ],
          "VpcId": "vpc-xxxxxxxxxxxxxxxxx"
        },
        ...
    
  6. インタープリタ終了
    最後にインタープリタを終了します。

    quit()
    

まとめ

この記事では、AWS CloudShellとboto3を用いて、AWSリソースを対話的に操作する方法について解説しました。

CloudShellであれば、セットアップなしでboto3を利用することが可能です。また、Pythonのインタープリタを使えば、対話的にboto3のAPIを試すことができます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?