Python概要PythonでAWSの月間利用料を取得するスクリプトをかきました。今回のものは他のPythonスクリプトから読み込ませることも意識しています。Frameworkをつかってデプロイしてみます。deployしてAWSにデプロイするようなイメージ。以下に役に立つページがあります。手順5まですすめます。CircleCIの設定ファイルを作成するCircleCIの設定ファイルであるconfig.ymlを作成します。.circleci/config.ymlconfig.ymlの中身はこんなかんじ。deployするだけです。Projectして、Commit契機でうごくようにしておきます。CircleCIをうごかすaddしてcommitしてPushしてCircleCIをうごかします。デプロイされるデプロイできました。FrameworkをつかってLambda(Python)をAWS環境にデプロイしてみます。Frameworkのテンプレートを作成します。./requests-testできました。Lambda(Python)のコードをかくデプロイしたいLambdaのコードをかきます。今回はhandler.pyを以下のように上書きしてしまいます。requestsをつかってcurlするだけのPythonです。'')ローカルでちゃんと動作することがわかります。必要なパッケージをrequirements.txtにかくこのhandler.pyの実行に必要なパッケージをrequirements.txtに記載してあげます。./requirements.txtこんなかんじ。serverless.ymlを編集してあげるserverless.ymlを以下のように編集してあげます。serverless-python-requirementsをインストールするserverless-python-requirementsをインストールしてあげます。これにより、requirements.txtで依存関係を自動的にバンドルしてくれます。AWS環境にデプロイするいよいよデプロイです。以下コマンドを実行してあげると、AWS環境にLambda関数がデプロイされます。裏でCloudFormationがうごいています。ゴミ掃除removeで全削除できます。removeおわりにべんりな世の中になりましたね。??????ってなるときの原因と対処法です。基本的に全部以下に書いてある。時間ほどかかる場合があります。Redirect」レスポンスが返る場合があります。対処法これも書いてある。リージョンにあります。アクセスする必要がある場合は、バケットのリージョンのエンドポイントが含まれるように、このディストリビューションのオリジンドメイン名を変更します。変更することができます。Nameをkabegiwa-test-bucket.s3-ap-northeast-1.amazonaws.comといった形にして5分くらいでちゃんとCloudFront経由でやりたいことが実現できた。おわりに意外とハマった。22:53Tweetもっと読むコメントを書く2020-01-23CloudFront経由でのみS3のコンテンツにアクセスさせるAWS概要CloudFrontのオリジンアクセスアイデンティティを使用して、CloudFront経由でのみS3バケット内のコンテンツにアクセスさせてみます。手順CloudFrontのオリジンの設定で以下のように設定します。Policyにします。すると以下のようにオリジンに設定したバケットのバケットポリシーが自動で設定されます。Deiniedになります。CloudFrontのDNS名経由ではアクセスすることができます。おわりにセキュアですね。22:45Tweetもっと読むコメントを書く2020-01-23AWSCLIでAWSアカウントを作成するAWS概要AWSCLIを利用してAWSアカウントをコマンド一撃で作成してみます。Organizationsのマスターアカウントであるアカウント作成の権限があるコマンドこれでいけます。アカウント名とルートアカウントのメールアドレスを指定してあげるだけです。22:22Tweetもっと読むコメントを書く2020-01-21ECS上でApacheを動かしてアクセスするAWS概要ECS上でApacheを動かしてアクセスするだけのおはなしです。具体的には以下のような構成です。手順ALBを作成するECSに接続するLBを事前に作成しておきます。リスナーをHTTPSでターゲットグループはポートを8080にします。ヘルスチェックは/healthで作成します。ECSクラスタを作成するふつうにつくればもんだいないです。タスク定義を作成するネットワークモードをbridgeにし、コンテナをhttpdで作成します。ポートマッピングでホストポート8080をコンテナポート80にマッピングしておきます。サービスの設定サービスの設定で、さきほど作成したタスク定義を起動するように設定する。動作確認https://ALBのドメイン名でアクセスする。works!!!おわりにワインをのみながらかいている。22:32Tweetもっと読むコメントを書く2020-01-19ALBにACM/SSL証明書を関連付けるAWS概要ALBにACM/SSL証明書を関連付けてみます。画像のような感じです。基本的なかたちですね。ユーザからALBまではHTTPSで、ALBからEC2までの内部通信はHTTPです。ACMで証明書を取得する以下ですこしやりました。EC2インスタンスの作成と設定ALBからのアクセスを受けるEC2インスタンスを設定してあげます。セキュリティグループはALBからの通信を受けられるような設定のものをアタッチしてあげます。以下のようなかんじの設定でALBを作成してあげます。手順2で作成したインスタンスを登録済みに追加する。EC2インスタンスの設定をする(Apache)インスタンスにssh接続し、以下を実行してApacheの設定をしてあげます。した確認この時点でALBからインスタンスにアクセスできるかどうかを確認してみます。ターゲットグループのステータスの確認ターゲットグループのステータスがhealthyかどうかを確認します。ALBのDNS名からブラウザでアクセスALBのDNS名からブラウザでアクセスして確認してみます。https://ALBのドメイン名です。証明書のドメインとALBのドメインが違うため、警告がでますが、無視してさきにすすみます。wawawaと表示されればOKです。Route53の設定ALBのDNS名をコピーし、Route53にCNAMEとして追加してあげます。最終確認ブラウザからドメイン名でアクセスします。11:33Tweetもっと読むコメントを書く2020-01-18お名前.comで取得したドメインの証明書をACMで取得するAWS概要お名前.comで取得したドメインの証明書をACMで取得してみます。手順こんなかんじの手順です。Zoneを作成します。作成されたときにできるNSレコードを控えておきます。続いて、お名前.comの[ドメイン設定]-[ネームサーバーの変更]へ遷移し、ACMを取得するドメインを選択、先の手順で控えたNSレコードを入力します。インターネットの環境により、反映完了まで24時間から72時間程度かかる場合があるらしい。ACMで証明書を取得マネジメントコンソールから[証明書のリクエスト]であとは画面にそってしすすみます。検証方法はDNSによる検証で良いと思います。画面にそってすすんでステップ5で[Route53でのレコードの作成]を選択してRoute53にCNAMEレコードを追加してあげます。おわりにかんたんですね。Kubernetes概要EKSクラスタを作成してpodをつくるまでのメモです。1kubectlで使えるようにconfigに追記させる。~/.kubeconfig確認クラスタができている。ap-northeast-1fargateではないのでnodegroupがインスタンスで動作している。ami-02e124a380df41614podの作成podをつくります。centos確認podができている。Terraform概要リモートステートをつかって別のstateファイルの値を参照して見たいと思います。stateをまたいでいろいろできたりするのでstateの分離等もしやすくなるかもしれないしならないかもしれない。EC2インスタンスを作成するstateと、それにEIPをアタッチするstateが別なんだけれどもアタッチができるよっていうのをやります。バージョンTerraformのバージョン等はこんなかんじ。v2.43.0EC2インスタンスをつくるstateのtfファイルひとつめのstateです。aws_instance.example.id}EIPをアタッチするstateのtfファイル2つめです。data.terraform_remote_state.remote_state.outputs.instance_id}うごかしてみるうごかしてみますEC2インスタンスをつくるstateのtfファイルこんなかんじになります。参照される値はoutputで出力する必要があります。Terraform概要TerraformのtfstateファイルをS3バケットで管理してみます。仕事でチームでやるときはだいたいこの設定でやると思う。こんなかんじこんなかんじで設定してあげます。initするだけでtfstateファイルがS3バケットに格納されるようになります。おわりにtfstateファイルはGitで管理するよりこっちのほうが良いと思う。pushとかpullしわすれたときの被害がでかいと思う。その点、これは自動でやってくれるのでべんり。Beanstalkで作成されたS3バケットを削除しようとしたときに以下のようなエラーがでた。Denied権限は足りてるはずなのにおかしいなあと思ってすこしハマったのでメモ原因バケットポリシーに以下にようなポリシーが設定してあるため。DeleteBucketをDenyしている。単純にバケットポリシーを削除してしまえばいい。Terraform概要Terraformでランダムな数値列をサフィックスにして、バケットの名前がかぶらないようにしつつ、バケットを作成してみます。前提terraformのバージョン等はこんなかんじ。v2.2.1こんなかんじこんなかんじでできます。randomプロバイダを利用します。"kabegiwa-${random_integer.suffix.result}"}実行するとこんなかんじでバケットが作成されます。Terraform概要TerraformでAWSアカウント番号(アカウントID)を取得してみます。前提Terraformのバージョンはこんなかんじ。v2.43.0こんなかんじみんなだいすきcaller_identityです。data.aws_caller_identity.wawawa_id.account_id}おわりにべんりですね。誰?インフラエンジニアをやっている27歳の個人事業主。LPIC-304AWSアソシエイト2つおしごとあれば。(4)月別アーカイブLinksGitHubtwitterスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。