ablog

不器用で落着きのない技術者のメモ

AWS

Athena で CloudTrail から S3 イベントを集計する

AWS

クエリ select eventname, count(1) cnt from cloudtrail_logs where eventsource = 's3.amazonaws.com' group by eventname order by cnt desc 実行結果 eventname count ListObjects 263702 PutObject 200075 GetObject 134911 HeadObject 83034 UploadPar…

Amazon Redshift の監査ログの種類

AWS

デフォルトで Amazon Redshift の監査ログは設定したバケットに以下のパスで出力されるが、 AWSLogs/AccountID/ServiceName/Region/Year/Month/Day/ AccountID_ServiceName_Region_ClusterName_LogType_Timestamp.gzLogType は connectionlog、useractivityl…

S3 のアクセスログのオペレーションを集計する

AWS

ちょっとした量のS3 のアクセスログのオペレーションを集計する。 S3 のアクセスログを EC2 にダウンロードする。 $ aws s3 cp --recursive s3://s3-accesslog-az/ ./ オペレーションで集計する。 $ find . -type f -print0|xargs -0 -I{} perl -lane 'print…

アカウント毎にアクセス可能な S3 Prefix を制御する S3 バケットポリシー例

AWS

やりたいこと データレイクアカウントと連携相手の複数アカウントの間で1対多のクロスアカウントアクセス制御を行う。 連携相手のアカウントから特定S3バケットの特定 prefix 以下のみへの Put/Get/Delete を許可。 連携相手のアカウント毎に Put/Get/Delete…

AWS CLI で IAM Role の Unique ID を取得する

AWS

$ aws iam get-role --role-name EC2AdminRole { "Role": { "Description": "Allows EC2 instances to call AWS services on your behalf.", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect…

特定のVPC EndpointからのみPut/Get/Deleteを許可するS3バケットポリシー

AWS

特定のVPC EndpointからのみPut/Get/Deleteを許可するS3バケットポリシーの記述例。 { "Version": "2012-10-17", "Statement": [ { "Sid": "Access-to-specific-VPCE-only", "Effect": "Deny", "Principal": "*", "Action": [ "s3:PutObject", "s3:GetObject…

RDS Oracle で DataPump のダンプファイルをS3にアップロードする

RDS Oracle で DataPump のダンプファイルをS3にアップロードするには rdsadmin.rdsadmin_s3_tasks.upload_to_s3 を使うとよい。 例 SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3( p_bucket_name => 'mys3bucket', p_prefix => '', p_s3_prefix => '', p…

AWS Summit Tokyo 2019 で登壇した

AWS

AWS Summit Tokyo 2019で「データレイク構築における成功の秘訣~マインドと進め方、設計ベストプラクティス~」というタイトルで登壇した。 パワポ界のアントニ・ガウディよろしく、スライドがサグラダファミリア状態でぎりぎりまで固まらなかった。プレゼ…

Java アプリから S3 にアクセス時に必要な証明書がない場合に発生する例外

発生する例外 証明書ファイルが存在しない、もしくは存在するが中身が空の場合 java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty 証明書ファイルが存在する…

AWS SDK for Java v1.11 を使った Java サンプルプログラムを実行してみる

AWS

aws-doc-sdk-examples/java at master · awsdocs/aws-doc-sdk-examples · GitHub をビルドして、S3 バケットをリスト表示する Java サンプルプログラムを動かしてみた。 インストール git をインストールする。 $ sudo yum -y install git OpenJDK をインス…

AWS CLI で 1TB の S3 オブジェクトをリスト表示する

AWS

準備 EC2インスタンス作成 インスタンスタイプ: m5.4xlarge AMI: Amazon Linux 2 AMI 2.0.20190508 x86_64 HVM gp2 6000GiBのEBSをアタッチ ボリュームタイプ: io1 IOPS: 64000 暗号化なし S3バケット作成 バケット名: az-20190609 オブジェクトレベルのログ…

Amazon Linux に node.js をインストールする

AWS

# curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - # yum install -y nodejs $ npm install aws-sdk 参考 AmazonLinuxへのシステムワイドなNode.jsインストール方法(yum編) - Qiita

DynamoDB->DynamoDB Streams->Lambda->Amazon Kinesis Firehose->Aurora に連携する

AWS

Amazon DynamoDB からのデータストリームを AWS Lambda と Amazon Kinesis Firehose を活用して Amazon Aurora に格納する | Amazon Web Services ブログ を試してみた。 必要なファイルをダウンロードする。 $ git clone https://github.com/awslabs/dynamo…

AWS CLI で Redshift クラスターを作成する

AWS

AWS CLI で Redshift クラスターを作成したメモ。 手順 サブネットグループ作成 $ aws redshift create-cluster-subnet-group --cluster-subnet-group-name sys01-dev-subnet001 --description 'test' --subnet-ids subnet-02a4f85a パラメータグループ作成 …

RDSのパラメータグループ作成してパラメータを変更時の CloudTrail イベント

AWS

RDS MySQL でパラメータグループ作成時のイベントは CreateDBParameterGroup、パラメータ変更時のイベントは ModifyDBParameterGroup。発生するイベントは Aurora でも同じ。 パラメータグループ作成 パラメータグループファミリー: mysql5.7 グループ名: my…

AWS CLI で Redshift のスナップショットを共有する

AWS

AWS CLI で Redshift のスナップショットを共有してみたメモ。 スナップショットを共有する 共有元AWSアカウント スナップショットを作成する。 $ aws redshift create-cluster-snapshot --snapshot-identifier redshift-cluster-1-snapshot --cluster-ident…

AWS CLI で Aurora のスナップショットを共有する

AWS

AWS CLI で Aurora PostgreSQL互換 のスナップショットを共有してみたメモ。 Aurora のスナップショットを共有する 共有元AWSアカウント RDSのスナップショットを作成する $ aws rds create-db-cluster-snapshot --db-cluster-snapshot-identifier aurora-po…

AWS CLI で RDS のスナップショットを共有する

AWS

AWS CLI で RDS Oracle のスナップショットを共有してみたメモ。 RDSのスナップショットを共有する 共有元AWSアカウント RDSのスナップショットを作成する $ aws rds create-db-snapshot --db-snapshot-identifier oracle-ee-112-snapshot --db-instance-ide…

YCSB で Memcached に負荷をかける

AWS

YCSB で Amazon ElastiCache(Memcached) に負荷をかけてみたメモ。 準備 EC2インスタンスを作成する AMI ID: amzn-ami-hvm-2018.03.0.20181129-x86_64-gp2 (ami-00a5245b4816c38e6) インスタンスタイプ: m4.xlarge アベイラビリティーゾーン: ap-northeast-1…

AWS CLI を実行すると "ImportError: cannot import name AliasedEventEmitter" と怒られる

AWS

事象 ある日、AWS CLI を実行すると "ImportError: cannot import name AliasedEventEmitter" と怒られるようになった。 $ aws s3 ls Traceback (most recent call last): File "/usr/bin/aws", line 19, in <module> import awscli.clidriver File "/usr/lib/python</module>…

YCSBで DynamoDB に負荷をかけたメモ

AWS

設定 YCSB/dynamodb/conf/AWSCredentials.properties accessKey = <アクセスキー> secretKey = <シークレットキー> YCSB/dynamodb/conf/dynamodb.properties dynamodb.awsCredentialsFile = dynamodb/conf/AWSCredentials.properties dynamodb.primaryKey = …

Redshift のエラーハンドリングとエラーメッセージの確認方法

AWS

copy.sql copy customer from 's3://awssampledbuswest2/ssbgz/customer' credentials 'aws_iam_role=arn:aws:iam::123456789012:role/RedshiftRole' gzip compupdate off region 'us-west-2'; エラー参照用のビューを作成する。 # create schema admin; # c…

AWS CLI でS3バケットのライフサイクル設定を取得する

AWS

AWS CLI でS3バケットのライフサイクル設定を取得する例。 ライフサイクル設定を取得する。 $ aws s3api get-bucket-lifecycle-configuration --bucket az-cp-src { "Rules": [ { "Filter": { "Tag": { "Value": "10y", "Key": "Name" } }, "Status": "Enabl…

EMRFS で KMS のカスタマー管理 CMK で暗号化する

AWS

EMR で KMS のカスタマー管理CMKを利用するには、S3 バケットのデフォルト暗号化で CMK を指定し、S3 と KMS に対する必要な権限を持つロールを EMR にアタッチすればよい。 また、S3 のバケットポリシーで特定の CMK 以外での PUT を禁止すると、「CMK 指定…

「AWS 認定ビッグデータ – 専門知識」試験の準備方法

AWS

「AWS 認定ビッグデータ – 専門知識(AWS Certified Big Data - Specialty)」の試験を受けるにあたっての勉強の仕方をメモ。AWS 認定 – 認定の準備に書かれている通りだが、Linux Academy の模擬試験が効果的だった。 準備方法 AWS 認定ビッグデータ – 専門…

VPCエンドポイントポリシーのサイズ上限

AWS

VPC エンドポイント ポリシーの使用 VPC エンドポイントポリシーは、エンドポイントの作成時または変更時にエンドポイントにアタッチする IAM リソースポリシーです。エンドポイントの作成時にポリシーをアタッチしない場合、サービスへのフルアクセスを許可…

Organization ID を利用してS3のクロスアカウントアクセスを許可する。

AWS

課題 S3 のバケットポリシーでクロスアカウントアクセスを許可する場合、Principal に指定するAWSアカウントIDの数が多くなると、バケットポリシーのサイズの上限に達してしまう。 解決策 S3 バケット内のオブジェクトへのクロスアカウントアクセスを提供す…

CloudTrail で CloudWatch Logs に配信しようとすると「ロールポリシーを検証できません」と怒られる

AWS

事象 CloudTrail で CloudWatch Logs に配信しようとすると「ロールポリシーを検証できません」と怒られる 再現手順 AWSマネジメントコンソールで[CloudTrail]-[証跡情報]から任意の Trail を選択する。 CloudWatch Logs で「次へ」をクリックする。 新しい…

cfnで作成したバケットポリシーを変更後にcfnで元に戻す

AWS

S3バケット作成とバケットポリシー設定を CloudFormation で行った後に、手動でバケットポリシーを変更し、CloudFormation で元に戻してみた。 CloudFormationでS3バケットを作成してバケットポリシーを設定する - ablogの手順で CloudFormation でS3バケッ…

CloudFormationでS3バケットを作成してバケットポリシーを設定する

AWS

CloudFormationでS3バケットを作成してバケットポリシーを設定してみたメモ。 手順 CreateS3Bucket.yml をローカルに作成する。 AWSTemplateFormatVersion: '2010-09-09' Description: This CloudFormation template to create S3 Bucket Parameters: S3Buck…