【無料で】クラロワAPIをlambdaから叩いてLINEに送る


以前、クラロワAPIをlambdaから叩いてLINEに送る という記事を書きました

システム自体はこちらで完成なのですが、結構お金がかかるという問題がありました

この問題の原因はクラロワAPI(Clash Royale API)がアクセス可能なIPを制限しているため生じていました
今回、RoyaleAPIが提供している公開Proxyを使うことで、無料でクラロワAPIをlambdaから叩いてLINEに送ることが出来たので記事にしていきます

概要

完成したもの

以前の記事と全く同じで、プレイヤー名放置している期間がLINEに届きます

構成

クラロワAPIはIPアドレスを指定する必要がありますが、RoyaleAPIのProxyを使うことでAWS側でIPアドレスを固定する必要がなくなりました

RoyaleAPIのProxy

RoyaleAPIについて

一言でいうと、公式に一番近い非公式な存在です
アップデート情報をいち早く伝えたり、プレイデータの統計をとって公開したりなど、クラロワユーザーなら一度は耳にしたことがあるかと思います

また現在では停止していますが、クラロワの公式APIが提供される前から非公式APIを提供していました

使い方

ドキュメントに書いてある通りです

  1. クラロワAPIのKeyの作成時に128.128.128.128のアドレスを許可する
  2. リクエストを送るURLのapi.clashroyale.comproxy.royaleapi.devへ書き換える

セキュリティ

「公開Proxyは危険」という意見は多々見受けられます

ここで述べられる危険性は仰る通りであり、頭の中に入れておいて下さい

RoyaleAPIのProxyを経由する情報は、ヘッダーにあるクラロワ公式のAPIキーAPIから取得したデータになります
APIキーは無料で制限もないですし、取得するデータも秘密にしたいわけではないので、そこまで問題ないかと思います(個人的な意見です)

便利さを取るか、セキュリティと取るか、は個人の判断におまかせします

クラロワAPIのKeyの作成

developer.clashroyale.comの右上の名前のところからMy Accountを選択し、Create New Keyから新しい鍵を作成します

ALLOWED IP ADDRESS128.128.128.128を指定します

Create Keyで鍵を生成して、出来たtokenを保存します

実装(以前からの変更)

以前のコード変更後のコード の変更箇所について説明します

変更点以外の説明は以前の記事を参照して下さい

APIのBASE_URLを変更

# 変更前
CR_BASE_URL = 'https://api.clashroyale.com/v1'
# 変更後
CR_BASE_URL = 'https://proxy.royaleapi.dev/v1'

serverless.ymlの不要な箇所を削除

  # VPCのロールに関する記述を削除
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "ec2:CreateNetworkInterface"
        - "ec2:DescribeNetworkInterfaces"
        - "ec2:DeleteNetworkInterface"
      Resource:
        - "*"

  # VPCのセキュリティグループに関する記述を削除
  vpc:
    securityGroupIds:
      ${env:VPC_SECURITY_GROUP_IDS}
    subnetIds:
      ${env:VPC_SUBNET_IDS}

APIキーを変更

.envファイルにAPIキーを追加

CR_ACCESS_KEY_EIP=[以前のAPIキー]
CR_ACCESS_KEY_PROXY=[今回作成したAPIキー]

serverless.ymlで設定しているAPIキーの環境変数を変更

# you can define service wide environment variables here
  environment:
    # 変更前
    CR_ACCESS_KEY: ${env:CR_ACCESS_KEY_EIP}
    # 変更後
    CR_ACCESS_KEY: ${env:CR_ACCESS_KEY_PROXY}

最後にserverless deployを実行すれば完了です

終わりに

RoyaleAPIさんのおかげて、何でも楽にやってくれるLambdaさんに戻ってくれました

RoyaleAPIは有志が運営しているサイトです。Donateページから支援することが出来ます
また、クリエーターコードRoyaleAPIでも支援することが出来ます

今回の構成はRoyaleAPIのおかげで無料で出来ています。是非クリエーターコード等で支援してあげましょう!