この記事について
JAWS-UG CLI専門支部 #73 Kinesis Firehose入門で実施するハンズオン用の手順書です。
前提条件
必要な権限
作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。
- Kinesis Firehoseのフルコントロール権限
- S3のフルコントロール権限
- STSの関するフルコントロール権限
- IAMの関するフルコントロール権限
- CloudWatchの関するフルコントロール権限
- CloudWatch Logsの関するフルコントロール権限
0. 準備
0.1. リージョンを指定
オレゴンリージョンで実施します。(東京マダー?)
コマンド
export AWS_DEFAULT_REGION="us-west-2"
0.2. 資格情報を確認
コマンド
aws configure list
インスタンスプロファイルを設定したEC2インスタンスでアクセスキーを設定せずに実行した場合、以下のようになります。
結果
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************QSAA iam-role
secret_key ****************c1xY iam-role
region us-west-2 env AWS_DEFAULT_REGION
0.3. バージョン確認
コマンド
aws --version
結果
aws-cli/1.11.24 Python/2.7.12 Linux/4.4.30-32.54.amzn1.x86_64 botocore/1.4.81
0.4. バージョンアップ(必要に応じて)
コマンド
sudo pip install -U awscli
1. Delivery Streamの作成
Destination(S3)を定義
定義ファイル名の指定
コマンド
S3_DESTINATION_FILE_NAME="s3-destination.json"
バッファサイズの指定
コマンド
BUFFER_SIZE=1
バッファインターバルの指定
コマンド
BUFFER_INTERVAL=60
変数を確認
コマンド
cat << ETX
S3_DESTINATION_FILE_NAME: ${S3_DESTINATION_FILE_NAME}
ROLE_ARN: ${ROLE_ARN}
BUCKET_NAME: ${BUCKET_NAME}
BUFFER_SIZE: ${BUFFER_SIZE}
BUFFER_INTERVAL: ${BUFFER_INTERVAL}
LOG_GROUP_NAME: ${LOG_GROUP_NAME}
LOG_STREAM_NAME: ${LOG_STREAM_NAME}
ETX
結果
S3_DESTINATION_FILE_NAME: s3-destination.json
ROLE_ARN: arn:aws:iam::************:role/service-role-firehose
BUCKET_NAME: jawsug-cli-firehose-************
BUFFER_SIZE: 1
BUFFER_INTERVAL: 60
LOG_GROUP_NAME: jawsug-cli-firehose
LOG_STREAM_NAME: handson
定義を生成
コマンド
cat << EOF > ${S3_DESTINATION_FILE_NAME}
{
"RoleARN": "${ROLE_ARN}",
"BucketARN": "arn:aws:s3:::${BUCKET_NAME}",
"Prefix": "",
"BufferingHints": {
"SizeInMBs": ${BUFFER_SIZE},
"IntervalInSeconds": ${BUFFER_INTERVAL}
},
"CompressionFormat": "UNCOMPRESSED",
"EncryptionConfiguration": {
"NoEncryptionConfig": "NoEncryption"
},
"CloudWatchLoggingOptions": {
"Enabled": true,
"LogGroupName": "${LOG_GROUP_NAME}",
"LogStreamName": "${LOG_STREAM_NAME}"
}
}
EOF
cat ${S3_DESTINATION_FILE_NAME}
結果
{
"RoleARN": "arn:aws:iam::************:role/service-role-firehose",
"BucketARN": "arn:aws:s3:::jawsug-cli-firehose-************",
"Prefix": "",
"BufferingHints": {
"SizeInMBs": ,
"IntervalInSeconds":
},
"CompressionFormat": "UNCOMPRESSED",
"EncryptionConfiguration": {
"NoEncryptionConfig": "NoEncryption"
},
"CloudWatchLoggingOptions": {
"Enabled": true,
"LogGroupName": "jawsug-cli-firehose",
"LogStreamName": "handson"
}
}
JSONファイルを検証
コマンド
jsonlint -q ${S3_DESTINATION_FILE_NAME}
Delivery Streamの作成
Delivery Stream名の指定
コマンド
DELIVERY_STREAM_NAME="jawsug-cli-stream"
パラメータの確認
コマンド
cat << ETX
DELIVERY_STREAM_NAME: "${DELIVERY_STREAM_NAME}"
S3_DESTINATION_FILE_NAME: "${S3_DESTINATION_FILE_NAME}"
ETX
結果
DELIVERY_STREAM_NAME: "jawsug-cli-stream"
S3_DESTINATION_FILE_NAME: "s3-destination.json"
Delivery Streamの作成
コマンド
aws firehose create-delivery-stream \
--delivery-stream-name ${DELIVERY_STREAM_NAME} \
--s3-destination-configuration file://${S3_DESTINATION_FILE_NAME}
結果
{
"DeliveryStreamARN": "arn:aws:firehose:us-west-2:************:deliverystream/jawsug-cli-stream"
}
Delivery Streamの確認
デリバリーストリームのステータスがACTIVEになってから次の手順を実行してくだい。
コマンド
aws firehose describe-delivery-stream \
--delivery-stream-name ${DELIVERY_STREAM_NAME}
結果
{
"DeliveryStreamDescription": {
"HasMoreDestinations": false,
"VersionId": "1",
"CreateTimestamp": 1478329794.659,
"DeliveryStreamARN": "arn:aws:firehose:us-west-2:************:deliverystream/jawsug-cli-stream",
"DeliveryStreamStatus": "ACTIVE",
"DeliveryStreamName": "jawsug-cli-stream",
"Destinations": [
{
"DestinationId": "destinationId-000000000001",
"S3DestinationDescription": {
"RoleARN": "arn:aws:iam::************:role/service-role-firehose",
"Prefix": "",
"BufferingHints": {
"IntervalInSeconds": 60,
"SizeInMBs": 1
},
"EncryptionConfiguration": {
"NoEncryptionConfig": "NoEncryption"
},
"CompressionFormat": "UNCOMPRESSED",
"CloudWatchLoggingOptions": {
"Enabled": true,
"LogStreamName": "handson",
"LogGroupName": "jawsug-cli-firehose"
},
"BucketARN": "arn:aws:s3:::jawsug-cli-firehose-************"
}
}
]
}
}