Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

AWSでのPython言語での開発についてまとめています。

AWS用のPython SDKやIDE環境用プラグイン

AWSでは、Python言語でAPIからAWSサービスを操作するためのSDK(ライブラリ)が提供されています。

参考)AWS SDK for Python | AWS

AWS SDK for PythonはBoto3と呼ばれ、クライアントAPI(低レベルAPI)と、より抽象化されたリソースAPI(高レベルAPI)が用意されています。クライアントAPIでは、AWSのREST APIと1対1で対応した作りとなっています。リソースAPIでは、AWSリソースをオブジェクト指向で扱うことができるようになっています。

たとえば以下は、リソースAPIを使って、PythonからSQS Queueのメッセージを取り出し、対応するS3オブジェクトを取り出すサンプルです。

【関連記事】
AWS SQSを使ってお手軽にメッセージキューイング(MQ)をしよう!

# SQS Queue
messages = queue.receive_messages()

# SQS Message
for message in messages:
    message.delete()

# S3 Object
obj = s3.Object(bucket_name='boto3', key='test.py')
response = obj.get()
data = response['Body'].read()

関連)リソースAPI Boto3 Docs 1.20.46 documentation

AWS SDK for Python(Boto3)のインストール

AWS SDK for Python(Boto3)のインストールは、pipコマンドを使っておこないます。以下は、githubからboto3をget cloneでダウンロードし、pip installを行う例です。環境を現在使用中のPython環境を壊さないようにvirtualenvコマンドを使用しています。

$ git clone https://github.com/boto/boto3.git
Cloning into 'boto3'...
remote: Enumerating objects: 23683, done.
remote: Counting objects: 100% (4700/4700), done.
remote: Compressing objects: 100% (1611/1611), done.
remote: Total 23683 (delta 3270), reused 4447 (delta 3089), pack-reused 1898
Receiving objects: 100% (23683/23683), 4.30 MiB | 1.12 MiB/s, done.
Resolving deltas: 100% (17358/17358), done.

$ cd boto3
$ virtualenv venv
...
$ . venv/bin/activate
$ python -m pip install -r requirements.txt
$ python -m pip install -e .

$ python -m pip install boto3

Boto3からAWSのサービスを利用するためには、アクセスキーとシークレットアクセスキーが必要になります。~/.aws/credentialsファイルにキーを記入します。

[default]
aws_access_key_id = YOUR_KEY
aws_secret_access_key = YOUR_SECRET

【関連記事】
AWSのアクセスキーの作成や管理方法 シークレットアクセスキーの確認方法は無い

また、~/.aws/configにデフォルトリージョン(ここでは、us-east-1)を設定します。

[default]
region=us-east-1

AWS Toolkit(IDE環境用のAWSプラグイン)

統合開発環境(IDE)を使ってデバッグやコードのデプロイをおこなうためのプラグインも提供されています。対応しているIDE環境は、PyCharm、IntelliJ IDEA、Visual Studio Codeです。

PyCharmは、Python専用のIDE環境で、初心者に人気の定番IDEです。Visual Studio Codeはマイクロソフト社が無償で提供しているIDEで、比較的小規模開発に向いています。コード管理にGitを使用します。IntelliJ IDEA(インテリジェイ アイデア)は、Javaの開発環境として人気のIDEで、Pythonも扱えます。

これらのIDE環境を使って、AWSのサーバーレスアプリの開発、デバッグ、デプロイなどのをおこなうことができます。

【関連記事】
AWS Lambdaとは、サーバレスでコード実行可能なコンピューティングサービス

PythonでAWS CDKを操作する

AWS CDKとは、プログラムを記述することでAWSの環境を構築するツールです。具体的には、Pythonでクラス定義をすることで、EC2インスタンス(VPCやAMI、ロールなども含む)のリソースを記述できてしまうんですね。

以下は、クラスEC2InstanceStackの定義内にて、VPC、AMI、ロール、インスタンスを記述した例です。

【関連記事】
AWSのインスタンス Amazon EC2サービスの料金と使い方

class EC2InstanceStack(Stack):

    def __init__(self, scope: Construct, id: str, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)

        # VPC
        vpc = ec2.Vpc(self, "VPC",
            nat_gateways=0,
            subnet_configuration=[ec2.SubnetConfiguration(name="public",subnet_type=ec2.SubnetType.PUBLIC)]
            )

        # AMI
        amzn_linux = ec2.MachineImage.latest_amazon_linux(
            generation=ec2.AmazonLinuxGeneration.AMAZON_LINUX_2,
            edition=ec2.AmazonLinuxEdition.STANDARD,
            virtualization=ec2.AmazonLinuxVirt.HVM,
            storage=ec2.AmazonLinuxStorage.GENERAL_PURPOSE
            )

        # Instance Role and SSM Managed Policy
        role = iam.Role(self, "InstanceSSM", assumed_by=iam.ServicePrincipal("ec2.amazonaws.com"))

        role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("AmazonSSMManagedInstanceCore"))

        # Instance
        instance = ec2.Instance(self, "Instance",
            instance_type=ec2.InstanceType("t3.nano"),
            machine_image=amzn_linux,
            vpc = vpc,
            role = role
            )
 :
 :

コードを実行することで、AWSの環境が構築できてしまうんですね。

AWSの環境設定をGUIでおこなう場合は、人間が画面操作をする必要があるため、手間がかかりますし操作ミスが起こる可能性があります。

しかし、CDKを使ってコードで記述してあれば、コードを実行するだけでAWSの環境構築ができてしまいます。

環境構築スクリプトとして使ったり、本番環境用のスクリプトを修正して、テスト環境や開発環境を作る場合にも便利です。

AWSのPythoのまとめ

ポテパンダの一言メモ
ポテパンダの一言メモ

 

 

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。