LoginSignup
1

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-01-04

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

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

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

概要

完成したもの

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

構成

aws-and-cr-using-proxy.png

クラロワ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を指定します

スクリーンショット 2021-01-03 15.33.30.png

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

スクリーンショット 2021-01-03 15.43.00.png

実装(以前からの変更)

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

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

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のおかげで無料で出来ています。是非クリエーターコード等で支援してあげましょう!

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
1