LoginSignup
2
1

More than 5 years have passed since last update.

[JAWS-UG CLI] Amazon Kinesis Firehose re:入門 (3) レコードの登録

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

    DELIVERY_STREAM_NAME: ${DELIVERY_STREAM_NAME}
    BUCKET_NAME: ${BUCKET_NAME}

ETX

1. 単一レコードの登録

1.1. データの生成

ファイル名の指定

コマンド
SINGLE_RECORD_FILE_NAME="record.json"

ファイルの生成

コマンド
cat << EOF > ${SINGLE_RECORD_FILE_NAME}
{
  "Data": "blob\n"
}
EOF

cat ${SINGLE_RECORD_FILE_NAME}

ファイルの検証

コマンド
jsonlint -q ${SINGLE_RECORD_FILE_NAME}

1.2. データの登録

変数の確認

コマンド
cat << ETX

    DELIVERY_STREAM_NAME: ${DELIVERY_STREAM_NAME}
    SINGLE_RECORD_FILE_NAME: ${SINGLE_RECORD_FILE_NAME}

ETX
結果

    DELIVERY_STREAM_NAME: jawsug-cli-stream
    SINGLE_RECORD_FILE_NAME: record.json

データの登録

コマンド
aws firehose put-record \
    --delivery-stream-name ${DELIVERY_STREAM_NAME} \
    --record file://${SINGLE_RECORD_FILE_NAME}
結果
{
    "RecordId": "********************************************************************************************************************************************************************************************************************************"
}

1.3. データの確認

ファイルの確認

1分(BUFFER_INTERVALで指定した時間)待ちましょう。

コマンド
aws s3 ls s3://${BUCKET_NAME} --recursive
結果
2016-11-05 07:21:54          4 2016/11/05/07/jawsug-cli-stream-1-2016-11-05-07-21-53-60e3ea4c-5e75-4fbd-8ce2-11406f55a930

ファイルのダウンロード

コマンド
mkdir data01
cd data01
コマンド
aws s3 sync s3://${BUCKET_NAME} .
結果
download: s3://jawsug-cli-firehose-************/2016/11/23/11/jawsug-cli-stream-1-2016-11-23-11-18-58-947ea60d-041c-4750-ab31-cff260b7cf58 to 2016/11/23/11/jawsug-cli-stream-1-2016-11-23-11-18-58-947ea60d-041c-4750-ab31-cff260b7cf58

ファイルの確認

コマンド
cat (ダウンロードしたファイルのパス)
結果
blob

1.4. ファイルの削除

ファイルの削除

コマンド
aws s3 rm --recursive s3://${BUCKET_NAME}/
結果
delete: s3://jawsug-cli-firehose-************/2016/11/05/07/jawsug-cli-stream-1-2016-11-05-07-21-53-60e3ea4c-5e75-4fbd-8ce2-11406f55a930
コマンド
cd ..
rm -r data01

2. 複数レコードの一括登録

2.1. データの生成

ファイル名の指定

コマンド
MULTI_RECORDS_FILE_NAME="records.json"

ファイルの生成

コマンド
cat << EOF > ${MULTI_RECORDS_FILE_NAME}
[
  {
    "Data": "blob1\n"
  },
  {
    "Data": "blob2\n"
  },
  {
    "Data": "blob3\n"
  },
  {
    "Data": "blob4\n"
  }
]
EOF

cat ${MULTI_RECORDS_FILE_NAME}

ファイルの検証

コマンド
jsonlint -q ${MULTI_RECORDS_FILE_NAME}

2.2. データの登録

コマンド
aws firehose put-record-batch \
    --delivery-stream-name ${DELIVERY_STREAM_NAME} \
    --records file://${MULTI_RECORDS_FILE_NAME}
結果
{
    "FailedPutCount": 0,
    "RequestResponses": [
        {
            "RecordId": "********************************************************************************************************************************************************************************************************************************"
        },
        {
            "RecordId": "********************************************************************************************************************************************************************************************************************************"
        },
        {
            "RecordId": "********************************************************************************************************************************************************************************************************************************"
        },
        {
            "RecordId": "********************************************************************************************************************************************************************************************************************************"
        }
    ]
}

2.3. データの確認

ファイルの確認

1分(BUFFER_INTERVALで指定した時間)待ちましょう。

コマンド
aws s3 ls s3://${BUCKET_NAME} --recursive
結果
2016-11-23 11:33:36         24 2016/11/23/11/jawsug-cli-stream-1-2016-11-23-11-33-35-e3f2b6dd-7923-4f54-aeff-301ddc998006

ファイルのダウンロード

コマンド
mkdir data02
cd data02
コマンド
aws s3 sync s3://${BUCKET_NAME} .
結果
download: s3://jawsug-cli-firehose-************/2016/11/23/11/jawsug-cli-stream-1-2016-11-23-11-18-58-947ea60d-041c-4750-ab31-cff260b7cf58 to 2016/11/23/11/jawsug-cli-stream-1-2016-11-23-11-18-58-947ea60d-041c-4750-ab31-cff260b7cf58

ファイルの確認

コマンド
cat (ダウンロードしたファイルのパス)
結果
blob1
blob2
blob3
blob4

2.4. ファイルの削除

ファイルの削除

コマンド
aws s3 rm --recursive s3://${BUCKET_NAME}/
結果
delete: s3://jawsug-cli-firehose-************/2016/11/23/11/jawsug-cli-stream-1-2016-11-23-11-33-35-e3f2b6dd-7923-4f54-aeff-301ddc998006
コマンド
cd ..
rm -r data02

以上

2
1
0

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
2
1