のぴぴのメモ

自分用のLinuxとかの技術メモ

AWS

Pythonで署名付きURLを作成し S3オブジェクトをGET/PUTしてみた

AWS

この記事は、S3の署名付きURLの学習のために署名付きURLを利用してS3のオブジェクトをPUT/GETしたときの手順をまとめたものです。 ポイントは3点、(1)S3の署名付きURLは、AWS CLIやSDKで生成可能、(2)ただしオブジェクトのPUT(アップロード)用の署名付きURL…

IAM Policy Simulatorの結果をJSON/CSV形式で出力するツール

作成したIAMポリシーやPermissions BoundaryのテストのためにIAM Policy Simulatorを利用すると便利ですが、テスト用のIAMアクションをGUIで作成しないといけないとか、結果をJSONやCSV形式の簡易な一覧で取得できない点が悩みでしたので、Pythonで簡単なツ…

フォワードプロキシ(NLB+EC2(AutoScaling))を作成するCloudFormation

AWS

NLB + EC2(Squid)構成のフォワードプロキシを作成するCloudFormationのテンプレートです。

Amazon Linux2にCloudWatchエージェントを設定する手順(ユーザデータでの手順あり)

Amazon Linux2にCloudWatchエージェントをセットアップする手順をまとめました。ドキュメントではSSMから操作する手順をメインにしていますが、AutoScalingなどでUserDataにセットアップ手順を埋め込むことを考慮し全てコマンドラインでセットアップが完結す…

AWS CLIのAssumeRoleするプロファイル設定を使って、AssumeRoleのクレデンシャルを取得し環境変数に設定するシェル芸 ワンライナーを作ってみた

見やすいようにバックスラッシュで行を分けてますが、ワンライナーです。 terraformをローカルマシンで実行する時に、AWSプロバイダーの部分にローカルマシン固有のプロファイルとか埋め込みたくないけど、都度クレデンシャルを手で環境変数に設定するのは手…

Lambda(python)で特定のロググループ & ログストリームにログ出力するサンプルコード

Lambdaで特定のロググループ & ログストリームにログ出力するコードのサンプルです。 この例では、eventの内容をLogsに出力しています。コードは以下の記事の内容をベースに一部最適化してます。 Python (Boto3) @ Lambda で CloudWatch Logs の特定のログス…

AWS BackupのOrganizations連携やクロスアカウントの機能をCLIで設定する方法

AWS

AWS Backupの権限分掌の設計を行うにあたって、それぞれの機能の設定をどのロールの人が実施できるのか明確化するために確認したものです。 確認結果としては、「バックアップポリシー」と「クロスアカウントモニタリング」はAWS Organizationsの機能、「ク…

Amazon ECS タスク定義の"タスクサイズのCPU"と”コンテナのCPUユニット”の違いを調べてみた

こちらはAWS Containers Advent Calendar 2020の13日目の記事です。 本記事は個人の意見であり、所属する組織の見解とは関係ありません。とてもこまか〜い話ですが、Amazon ECSのタスク定義設定ではCPUのリソース設定に関して以下の2つのパラメータがありま…

AWS環境のRHEL7/8にDNSキャッシュ(dnsmasq)を設定してみた

AWS環境にRHEL8とRHEL7にdnsmasqを利用したDNSキャッシュを設定した時の手順メモです。ネットワーク設定にDHCPを利用している環境の場合、DHCPとの整合性を合わせる部分が鍵となります。 RHEL8とRHEL7の違いですが、RHEL8はNetworkManagerがよろしくやってく…

アカウントに対してS3 block public accessをCLIで設定してみた

AWS

AWS CLIを利用してS3のパブリックアクセス ブロックを設定しようとしたら、設定対象によってCLIのコマンドが異なるという面倒な仕様だったのでメモを書いておきます。またAccess Pointは、Access Pointの作成時しかパブリックアクセス ブロックの設定ができ…

BINDのResolverを UserDataとAWS CLIの"ec2 run-instances"で作成する

検証などでVPCの中にDNSリゾルバーを個別に立てる場合に、bindのインストールや設定をUserDataに埋め込んでしまうことで、OSへのログインをせずにbindによるDNSリゾルバーを作る手順です。かつマネコンではなくAWS CLIで作っています。

Amazon S3のバケットのバージョニング設定とオブジェクトのバージョンの遷移を確認してみた

AWS

はじめに バケットのバージョニング設定により、オブジェクトのバージョンがどのように遷移するのかがいまいちわかっていなかったので、実際に動かして整理してみました。 まとめ バケットのバージョニング未設定の場合、オブジェクトのVersionIdはnullにな…

バージョニングが有効なS3バケットをAWS CLIで空にする手順(オブジェクト1000個以下)

AWS

S3のバケットを削除する場合、まずバケットを空にする必要があります。ここではAWS CLIを利用しバケットを空にし、その後にバケットを削除する手順を記載します。 具体的には list-object-versionsでオブジェクトをリストアップし、delete-objectでオブジェ…

AWS NitroインスタンスのLinuxでEBSボリュームを特定する手順

m5・c5・t3などのNitroタイプのインスタンスを利用している場合にOS上で認識しているボリュームがどのEBSボリュームかを、Volume IDベースで確認する手順です。 なおXenベースのインスタンス(m4以前、c5以前、t2以前など)は調べた限りでは、残念ながらVolume…

AWS Security Hubのマルチアカウント一括設定スクリプトを使ってみる

AWS

AWSが提供しているAWS Security Hubの一括設定ツールを試したのでそのメモです。 なんでこのツールを利用したかと言うと、AWS Security Hubはリージョン単位のサービスのためリージョンごとの設定が必要で、かつマルチアカウント構成の場合アカウント毎の設…

AWS CLIで最新のAMI IDを取得する

AWS

タイトルの通り、Amazon Linux2、RHEL8、Windows Server2019の最新AMIのAMI IDを取得するAWS-CLIのコマンドです。(元ネタは、EC2のユーザーガイド) AWS CLIの"ec2 describe-images"でAMI IDを確認しますが、その時に下記オプションを指定することで最新AMIの…

AWS Storage Gateway(VPC エンドポイントあり)環境をCLIで構築し運用する手順

AWS

AWS Storage GatewayのファイルゲートウェイをVPCエンドポイントを利用したVPC閉塞環境を、CLIで構築する手順です。この手順ではNFS接続、SMB(ゲスト接続)、SMB(ActiveDirectory認証)の構成を作成します。またキャッシュリフレッシュ、ソフトウェアップデー…

Windows Server 2019へのWindows Subsystem for Linuxのセットアップと利用Tips

Windows Subsystem for Linuxを使う必要があってPower Shellでセットアップした時のメモ。 (1)Enable-WindowsOptionalFeatureでSubsystem for Linuxを有効かして、(2)Invoke-WebRequest でUbuntuイメージをダウンロードして、(3)Add-AppxPackageでダウンロー…

IAMでサーバ証明書をインポートするCLI手順

AWS

ACM(AWS Certificate Manager)ではなく、IAMでサーバ証明書をインポートするときのCLI手順のメモです。 サーバ証明書のインポート PROFILE=default aws --profile ${PROFILE} iam upload-server-certificate \ --server-certificate-name hoge.com \ --certi…

KMS暗号化されてるEC2インスタンスのAMI取得し別リージョンにコピーする検証(AWS CLI)

AWS

KMS鍵(CMK)で暗号化したEBSを持つEC2インスタンスのAMIを取得し、別リージョンにコピーする場合、鍵がどうなるのかという確認をCLIで確認したエビデンスです。 結論としては、他リージョンにAMIをコピーする時にコピー先リージョンのCMKを指定することになり…

RDS KMS暗号化されてるDBインスタンスをスナップショットで別リージョンにコピーする検証(AWS CLI)

RDSをKMSの鍵で暗号化する場合、RDSインスタンスがあるそれぞれのリージョンKMS鍵(CMK:Customer Master Key)で暗号化しますが、DBスナップショットで、他リージョンにDBをコピーする場合、鍵はどうなるのかということを確認するための検証手順です。 結論と…

AWS CLIでVPCエンドポイントを作成する時のポリシー(JSON)の指定方法

AWS

CLIでVPCエンドポイントを作成するときに、エンドポイントポリシーのJSONをどうやって渡せばいいのかを悩んだので、そのメモ書きです。 JSONの文字列をシェルの変数に投入してあげるという解決策です。 実行例 AWS_PROFILE=default POLICY=' { "Statement": …

EC2の有償OSの課金コード("billingProducts")

AWS

インスタンスのメタデータの"http://169.254.169.254/latest/dynamic/instance-identity/document/"の中のbillingProducts"がそれっぽいです。”curl http://169.254.169.254/latest/dynamic/instance-identity/document/ "で参照できます。

AWS CodeCommitでgit認証にAWS CLIの認証情報ヘルパーを使用する

AWS

CodeCommitに作成したgitレポジトリに接続するための認証に、AWS CLIを利用する方法です。gitの認証ヘルパーに"aws codecommit credential-helper"を利用するのがポイントです。

VPCのsubnetのCIDRの割り当てのメモ

AWS

VPCのCIDRを"10.1.0.0/16"とした時のCIDR例。 私は検証用途での利用でIPが枯渇するほどインスタンスを起動するわけではなので、IPアドレス範囲をキツキツには設計していない。 ポイント Privateサブネットは少し大きめの19bitで切る。 Publicサブネットは、1…

AWS CloudFormation 起動テンプレート+CloudFormationヘルパースクリプトを使ってFowardProxyインスタンスを複数作成する

AWS

CloudFormationでsquidのFowardProxyインスタンスをCloudFormationヘルパーを利用してインスタンス起動時にセットアップするようにしています。このインスタンスをAutoscalingは使用せず複数個作成したいと思い、EC2の起動テンプレートを組み合わせることで…

(AWS) UserDataとCloudFormationヘルパースクリプトの定義情報取得や実行契機の違い

AWS

UserDataはインスタンスのメタデータから情報を取得するため、実質VPC設定やIAMロールを考慮する必要がありません。一方CloudFormationヘルパースクリプトは、CloudFormationのパブリックにあるエンドポイントから取得するためInternet GatewayやCloudFormat…

Amazon RDSのIOPS&容量変更をCLIで実行するサンプル

RDS プロビジョンド IOPSで、IOPSを変更して、DBがAvailableになるまでWaitするシェル(+AWS CLI)のサンプルです。 AWS CLIで”aws rds modify-db-instance”で変更をします。 RDS&プロビジョンド IOPSで、IOPS設定によるBLOBファイルインサートのパフォーマン…

CloudTrailの「組織の証跡」でOrganizationsメンバアカウントに一括CloudTrailを設定する手順 (ロギング専用アカウント+KMS暗号化)

AWS

AWS Oraganizationsを利用したマルチアカウント構成で、Oraganizationsの機能で、配下のAWSアカウントに共通のCloudTrail設定を行うことができる「組織の証跡」があります。ドキュメントは以下になりますが、logging専用のAWSアカウントのS3バケットを利用し…

Lambdaの実行ロールのクレデンシャルを確認してみた

AWS

Lambdaの関数からAWS APIを実行する場合、Lambdaに付与した実行ロール(Execution role)の権限が利用されますが、この実行ロールのクレデンシャルをLambda上でどう取得しているかがパッとわからなかったので、実機で確認しました。 結論を述べると、Lambdaを…