NRIネットコム Blog

NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

aws-sdk-ios-spmを使用してAmazon Kinesisにデータを送る

概要

本題の通りaws-sdk-ios-spmを使用してKinesisにデータを送る方法を紹介したいと思います。
spmと付いているのでお察しの方もいると思いますが今回はSwift Package Managerにて導入し、使用していきたいと思います。
使用するSDKは以下のものです。

github.com

環境

この記事は以下のバージョン環境のもと作成されたものです。
【Xcode】14.2
【iOS】16.2
【macOS】Ventuta

aws-sdk-ios-spmを導入する

今回Kinesisにデータを送る為に以下の手順で必要なSDKを導入していきたいと思います。
File -> Add Packages...もしくは
PROGECT -> PackageDependenciesから導入することができます。

今回導入するのは以下の3つのライブラリです。
・AWSCognitoAuth
・AWSCore
・AWSKinesis

以上でaws-sdk-ios-spmを導入は終了です。

Kinesisにデータを送ってみる

サンプルコードは以下の通りです。

import Foundation
import AWSCore
import AWSCognitoAuth
import AWSKinesis

final class SendToKinesis {
    let identiryPID = "ここはidentityPoolIdを入力して下さい"
    let keyName = "123"
    let streamName = "streamName"
    
    func testSendToKinesis(uid: String, mailAddress: String) {
        let credentialsProvider = AWSCognitoCredentialsProvider(
            regionType:.APNortheast1,
            identityPoolId:identiryPID)
        let configuration = AWSServiceConfiguration(region:.APNortheast1, credentialsProvider:credentialsProvider)
        AWSKinesis.register(with: configuration!, forKey: "defaultKey")
        let kinesisClient = AWSKinesis(forKey: "defaultKey")
        
        let jsonData = Data("""
            {
            "uid": "\(uid)",
            "address": "\(mailAddress)"
               }
            """.utf8)
        let putRecordInput = AWSKinesisPutRecordInput()
        putRecordInput?.data = jsonData
        putRecordInput?.partitionKey = keyName
        putRecordInput?.streamName = streamName
        
        kinesisClient.putRecord(putRecordInput!) { (output, error) in
            if let error = error {
                print("Error putting record: \(error)")
            } else {
                print("Record put successfully: \(output?.sequenceNumber ?? "")")
            }
        }
    }
}

identityPoolIdはCognitoに関するIDで、今回はUnAuthのロールIDを使用しました。 keyName及びstreamNameについてはKinesis側と合わせて代入しておけば良いです。

あとは適当な画面を作成してtestSendToKinesisを叩けばデータが送れているか確認することができます。

無事送れていることが確認できました。

まとめ

初めてAWSのKinesisにデータを送ってみる検証をしましたが、サクッとできて良かったです。(SDKのありがたさを感じました) 引き続きAWS×iOSについて深めていきたいと思います。以上aws-sdk-ios-spmを使用してKinesisにデータを送るでした。

執筆者岡優志

iOSエンジニア
iOSを専門とし、モバイルアプリの開発を行なっています。

Twitter