8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IBM Cloudの無料枠での遊び方

Posted at

調べることにしたきっかけ

東京郊外に引っ越したくて、おすすめの物件情報を教えてくれるアプリを作ろうと思ったが、金は絶対かけたくない。
IBM Cloudを使ってどこまで無料で実現できるか知りたかったので、軽いアプリを作ったりして確かめてみました。

今回使うコードはこちらを参照ください。
rikkyrice/tryic

またこの記事は、かなり細かい部分を割愛しているので、わかりにくい部分や聞きたいことがあればご連絡ください。

無料枠について

IBM Cloudでは一定の制約のもとであれば自由にお金を掛けずに触ることができるようです。
以下のサイトを参考にし、無料枠でどの程度触れるかを調べてみました。(2023/6月現在)
IBM Cloud無料利用枠 - 日本 | IBM

主なサービスは以下にまとめています。

サービス 無料利用枠 説明 対応するAWSサービス
IBM Db2® on Cloud 200MB分のデータ・ストレージ 強力なIBM Db2エンジンで動作するフルマネージドのクラウドSQLデータベース RDS or Aurora
IBM Cloud CodeEngine 10万vCPU秒/月 マネージド・サーバーレス・プラットフォーム上でアプリケーション、バッチ・ジョブ、コンテナを実行できる。IBMの現従業員は対象外 Fargate
IBM Cloud Kubernetes Service 1クラスター/30日間 ネイティブなKubernetes環境で、高いセキュリティーと可用性を保ちながらアプリケーションを実行できる。性能は低いが一連のKubernetesを用いたアプリケーションのライフサイクルを試せる EKS
IBM Cloud® Container Registry 5GBのプル・データ転送/月 フルマネージドの専用レジストリーでDockerコンテナ・イメージを管理できる ECR
IBM Cloud® Continuous Delivery 500件のデリバリー・パイプライン・ジョブ クラウドでGit、課題管理、CI/CDパイプライン、Eclipse Orion Web IDEを活用してDevOpsのベスト・プラクティスを実践できる Code Pipeline
IBM Cloud® Object Storage 25GB/月 非構造化データ向けに柔軟かつコスト効率の高いストレージが提供される。非アクティブの場合サービスが削除される S3
IBM Cloud® Functions 500万件の実行/月 受け取ったイベントに応答して、定義された機能をスケーラブルに実行できる Lambda
IBM Cloudant 1GB分のデータ・ストレージ Web、モバイル、IoT、およびサーバーレス・アプリケーション向けにスケーラブルなJSONドキュメント・データベースを提供が提供される DynamoDB
IBM Cloud MQ 1万件/月 マルチクラウド環境において、インフラストラクチャー全体を管理しながら、卓越したスピードと信頼性、セキュリティーによるメッセージングを実現できる SQS
IBM Cloud® Schematics 無料 Terraformをサービスとして活用し、環境全体でIBM Cloudのリソースのプロビジョニングと管理を自動化できる Cloud Formation
IBM Watson® Assistant 1万API呼び出し/月 アプリケーションに自然言語インターフェースを追加し、ユーザーとの対話を自動化できる Lex
IBM Watson® Text to Speech 1万文字/月 テキストから自然な話し方の音声を合成できる Polly

他にもAI系のサービスなど多くのサービスで無料枠がありますので、ぜひご確認ください。

プロモーションについて

IBM Cloudでは料金がかかるサービスについてプロモーションコードを入力することでクレジットを獲得し、疑似的に無料で使えるようにできる仕組みがあるようです。
しかし、クレジットがなくなると課金が発生するため、注意が必要となります。
また、IBMの現従業員は対象外となります。
プロモーションが適用できるサービスは以下があリます。(2023/6月現在)

サービス 無料利用枠 説明 対応するAWSサービス
IBM Cloud VPC 1000米ドル IBM Cloud Virtual Server for VPC, IBM Cloud Block Storage for VPCなど、IaaSサービスに適用できるプロモーション VPC, EC2, EBS, AMI
IBM Cloud Object Storage 1500米ドル 25GB/月無料に加えて、90日間有効な1500米ドルが利用できるプロモーション S3
IBM Cloud Databases 600米ドル IBM Cloud Databases for MongoDB, Redis, PostgreSQL, Elasticsearchで90日間利用できるプロモーション RDS, ElastiCache
IBM Cloudant 600米ドル 1GB分のデータ・ストレージに加えて、90日間有効なプロモーション DynamoDB

準備

IBM Cloudのアカウントを作るだけです。
メールアドレスはなんでも大丈夫で、作った瞬間から無料枠を利用可能となります。
ただし、クレジットカードの登録が必要であり、これがなかなか承認されず悲しい。。。(住所とかが海外の入力方式でそこが承認されにくいのかも)

利用方法

Db2

遊び目的で使うようなテーブルデータだったら料金は気にせず利用できると思います。

  1. ibm cloudにログインする
    1. 普通にマネジメントコンソールにログイン
  2. db2サービスを作る
    1. カタログからDb2を探して作成する(ダラスとかじゃないと無料で作成できないです)
  3. Go to UIでEditorを開く
  4. SQLを流す
  5. サービス資格情報を作成する
create table meibo (
  id varchar(10) not null, 
  name varchar(30) not null, 
  intro varchar(300) not null,

  primary key (id)
);
insert into meibo values 
  ('r457kb68yw', 'マイケル', '趣味はランニングです。25歳の男です。'), 
  ('hg97xzp060', 'ケビン', '36歳2児のパパです。金融関係の仕事をしています。'),
  ('6vi36q0xp5', 'ジェシカ', '19歳の女子大生です。情報工学部に所属しています。');

IBM Cloud CodeEngine + Db2

これも呼び出したCPUの利用時間によって課金されますが、学習目的ぐらいでは課金されるまでの利用は気にしなくて良いと思います。

簡単な名簿アプリを作ってDb2と繋げて確認できるAPIを作ったので、それをデプロイして疎通確認してみます。

  1. アプリケーションをコンテナ化してパブリックレジストリに格納する(IBM Container RegistryでももちろんOK)
    1. このリポジトリをクローンする
    2. Db2で作成したサービス資格情報からホスト名、ポート、データベース名、ユーザー名、パスワードをコピーしてdb/settings.jsに貼り付ける
    3. docker build -t tryic .でコンテナイメージを作る
    4. DockerHubの自分のリポジトリにタグをつけてプッシュする(もしくはibmcloud crコマンドでICRにプッシュでも良いです。詳しくはこちらをご確認ください)
  2. CodeEngineのプロジェクトを作る
    1. カタログからCodeEngineを探す
    2. プロジェクトを新規作成する(東京でも良いです)
  3. アプリケーションの作成を行い、イメージ参照に格納したイメージ名を入力する(パブリックならこれでOK、ICRなどプライベートならプルシークレットが必要)
    1. 作成したプロジェクト名をクリックし、アプリケーションの作成を押す
    2. イメージ参照にDockerHubにプッシュしたイメージ名をセットする(ICRに格納した人はイメージの構成を押し、作ったリージョンの名前空間とコンテナイメージを入力して完了を押す)
    3. リスニングポートは8080
  4. 作成する

これで、https://ドメイン名/meiboでアクセスできます。
ドメイン名はドメイン・マッピングパブリックで確認できます。

別途ロギングサービスを作成して紐づけることで、コンテナ内のログを出力することができます。(無料枠ではかなり使いにくい)
またCI/CD環境の構築も可能です。
コンテナイメージに更新があった場合は自動デプロイを制御することができます。

IBM Cloud Kubernetes Service + Db2 + Continuous Delivery

30日間の完全なフリーのクラスターを作ってkubernetesの操作を行うことが可能です。
secretを作ったりtemplateを作ったり永続ボリュームを作ったりすることもできるので、かなり汎用的なkubernetesの操作を実践的に学ぶことができます。

またCD/CIも無料で使えるので便利です。
しかしドメインマッピングができないのでIPアドレス+ポートでアクセスする必要がある点は注意が必要です。

  1. GitHubにリポジトリを作成する
    1. サンプルアプリを自分のGitHubリポジトリにプッシュする
  2. フリークラスターを作成する
    1. IBM CloudのカタログからKubernetesを探す
    2. フリークラスターを作成する(適当なリージョンに作成されます)
  3. KubernetesクラスターはIBM Cloud Container Registryからコンテナイメージをプルしてくるので、ICRで名前空間を作成しておく
    1. カタログからContainer Registryを探す
    2. 東京リージョンに名前空間を作る(これによりICRに格納するためのコンテナイメージは、prefixにjp.icr.io/名前空間をつける必要があります)
  4. DevOpsからツールチェーンを作成する
    1. クラスタビューからDevOpsをタップし、ツールチェーンの作成を押す
    2. Kubernetesアプリの開発をタップ
    3. リージョンは東京、ソース・プロバイダーはGitHubで、自分のGitHubアカウントを認証する
    4. リポジトリー・タイプは既存として、自分のGitHubリポジトリーを選択する
    5. Delivery PipelineのIBM Cloud APIキーを新規作成する
    6. Container Registryリージョンは東京を選択し、クラスター名前空間はdefaultとする
    7. 最後にツールチェーン名をtryic-tcなどに変更する
  5. パイプラインの各ステージの構成を変更する
    1. ci-pipelineをタップする
    2. CONTAINERIZEステージのステージの構成を押し、Build container imageジョブのビルド・スクリプトの以下を修正する
      1. source <(curl -sSL "${COMMONS_HOSTED_REGION}/scripts/build_image_buildkit.sh") -> source ./scripts/build_image_buildkit.sh
    3. DEPLOYステージのステージの構成をおし、Deploy to Kubernetesジョブのデプロイ・スクリプトの以下を修正する
      1. source <(curl -sSL "${COMMONS_HOSTED_REGION}/scripts/check_and_deploy_kubectl.sh") -> source ./scripts/check_and_deploy_kubectl.sh
    4. デプロイをし直すため、BUILDステージの再生ボタンをタップする
  6. デプロイが完了したらDeploy to KubernetesのログにアクセスURLが載っている
    1. DEPLOYステージのログ及び履歴の表示を押す
    2. 一番下までスクロールするとhttp://{パブリックIPアドレス}:{ポート}形式でアクセスURLが載っているのでタップ

これで疎通ができます。

ローカルにCLIをインストールするとKubernetesの操作がCLIでできるようになりますので、ぜひお試しください。
IBM Cloud Shellを使ってブラウザでの操作も可能です。

IBM Cloud Object Storage + IBM Cloud Functions + Cloudant

IBM CloudのオブジェクトストレージであるICOSに静的WEBサイトをアップロードし、IBM Cloud FunctionsをWEBアクションとして呼び出すことで簡単なアプリケーションを作成することができます。
html+jsのファイルをindex.htmlという名前でアップロードすることで閲覧できるようになります。

また、CloudantというNoSQLのデータベースと繋いでデータの閲覧を制御してみようと思います。

  1. Cloudantリソースを作成する
    1. カタログからCloudantを探す
    2. Liteプランでリソースを作成する(Liteプランは一つしか作成できません)
  2. データベースを作成、ドキュメントを作る(json)
    1. Launch Dashboardをタップ
    2. Create Databaseをタップし、meiboという名前をつける
    3. Create Documentをタップし、icos/data.jsonの各要素を一つずつ作成する(ブラウザでの操作ではBulkオペレーションができないので、jsonをそのまま貼り付けても全要素が作成されません)
  3. サービスの資格情報を作成して、API KeyとURLをメモしておく
    1. サービス資格情報をタップし、新規資格情報を作成する
    2. 資格情報のうち、apikeyurlをメモする
  4. IBM Cloud Functionsに名前空間の設定をし、アクションを作成する
    1. カタログからCloud Functionsを探す
    2. 名前空間の設定から名前空間を作成する
    3. アクションから作成を押し、アクションを選択する
    4. ランタイムnode16として作成
    5. icos/cf.jsをコピーし貼り付ける
    6. CLOUDANT_URLに先ほどコピーしたurlを貼り付ける
    7. CLOUDANT_APIKEYに先ほどコピーしたapikeyを貼り付ける
    8. 保存する
  5. Webアクションを有効にしてパブリックURLをメモしておく
    1. エンドポイントタブからWebアクションとして有効化を押して保存する
    2. パブリックURLをコピーする
  6. index.htmlでAPIリクエストを送っているjavascriptのURLを書き換える
    1. icos/index.htmlの62行目のURLをパブリックURLに書き換える
  7. ICOSリソースを作成し、バケット作成から静的Webサイトのホスティングを選択し、index.htmlをアップロードする
    1. カタログからCloud Object Storageを探す
    2. Liteプランを選択して作成する
    3. バケットの作成をタップし、静的Webサイトのホスティングをタップする
    4. パブリックアクセスの有効化オンにして、次へを押す
    5. icos/index.htmlをアップロードする
    6. バケットを作成すると、静的Webサイト・ホスティングにエンドポイントが切られているのでアクセスする

これで疎通できます。

そのほか色んな関数をデプロイして、html+jsで呼び出すことで簡単にアプリを構築できます。

LINE Messaging API + IBM Cloud Functions + Cloudant

HTMLを書かなくても、LINE Messaging APIと繋ぐことで、リッチなデータ管理アプリケーションを瞬時に構築することができます。

作り方は簡単で、LINE Messaging APIのアクションにCloud FunctionsのパブリックURLを指定するだけです。
ユーザーからのチャットをルーティングし、必要なデータをCloudantからクエリしてきて、返すだけでデータの管理ができます。

私は、suumoから物件情報をスクレイピングしてCloudantに条件に合致したデータを保存する関数を、バッチとしてデプロイし、
LINE Botにおすすめ物件を見せてと送ることで楽々確認できるアプリを作ったりしています。

全て無料でできるので、ぜひ試してみてください!

参考

IBM Cloud無料利用枠 - 日本 | IBM

8
4
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
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?