LoginSignup
0

More than 5 years have passed since last update.

[JAWS-UG CLI] Amazon Kinesis Firehose re:入門 (2) Delivery Streamの作成

Last updated at Posted at 2017-08-07

この記事について

JAWS-UG CLI専門支部 #90 Kinesis Firehose 復習編で実施するハンズオン用の手順書です。

前提条件

必要な権限

作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。

  • 以下のサービスに対するフルコントロール権限
    • Kinesis Firehose
    • IAM
    • EC2
    • S3
    • CloudWatch Logs
    • STS
    • (Lambda)
      • データの変換を行う場合
    • (KMS)
      • データの暗号化を行う場合

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.129 Python/2.7.12 Linux/4.9.38-16.33.amzn1.x86_64 botocore/1.5.92

0.4. バージョンアップ(必要に応じて)

コマンド
sudo pip install -U awscli

0.5. 変数の確認

コマンド
cat << ETX

    ROLE_ARN: ${ROLE_ARN}
    BUCKET_NAME: ${BUCKET_NAME}

ETX

1. Delivery Streamの作成

1.1. 設定ファイルの作成

Delivery Stream名の指定

コマンド
DELIVERY_STREAM_NAME="jawsug-cli-stream"

定義ファイル名の指定

コマンド
S3_DESTINATION_FILE_NAME="s3_destination_configuration.json"

バッファサイズの指定

コマンド
BUFFER_SIZE=1

バッファインターバルの指定

コマンド
BUFFER_INTERVAL=60

ロググループ名およびログストリーム名の指定

コマンド
LOG_GROUP_NAME="/aws/kinesisfirehose/${DELIVERY_STREAM_NAME}"
LOG_STREAM_NAME="S3Delivery"

変数を確認

コマンド
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_configuration.json
    ROLE_ARN: arn:aws:iam::XXXXXXXXXXXX:role/service-role-firehose
    BUCKET_NAME: firehose-jawsug-cli-s3bucket-134czh3hcofqz
    BUFFER_SIZE: 1
    BUFFER_INTERVAL: 60
    LOG_GROUP_NAME: /aws/kinesisfirehose/jawsug-cli-stream
    LOG_STREAM_NAME: S3Delivery

定義を生成

コマンド
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}

1.2. Delivery 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-************"
                }
            }
        ]
    }
}

以上

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0