0
0

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.

AWSエンジニアが学習するAlibaba Cloud【Function Compute編 (2)】

Last updated at Posted at 2022-11-16

普段AWSを主に利用しているエンジニアがAlibabaCloudを学習するために調べた情報や手順を紹介します。

今回の内容は

  • Serverless Devsの概要
  • Function Computeの実行(Serverless Devs)

となります。

■ Disclaimer

本記事は掲載時点の情報であり、最新の情報とは異なる場合があります。
本記事は完全性、正確性、有用性、安全性などを保証するものではありません。
本記事をご利用の場合は自己責任にてお願いします。

■ Prerequisites

■ Overview

1. Serverless Devsの概要

ServerlessDevs-image-00001.PNG

Serverless Devsは、強力なツールチェーンシステムを提供することに特化したオープンソースのサーバーレス開発者向けプラットフォームとなります。
AWS Serverless Application Model (AWS SAM) と似たプラットフォームとなりますが、マルチクラウドへのデプロイを前提としている為、Alibabaだけではなく他のクラウドへもデプロイが可能なのが特徴です。

1-1. Serverless Devsの公式サイト

1-2. Serverless Devsのライセンス

  • Apacheライセンス2.0として提供1

1-3. Serverless Devsの歴史

  • 2020年10月 Serverless開発者向けプラットフォーム「Serverless Devs」を正式にオープンソース化
  • 2020年11月 Cloud Native Computing Foundation(CNCF)のLandscopeとして登録
  • 2021年4月 Serverless Devs 2.0を正式リリース
  • 2021年8月 Serverless Devsのダウンロード数が2万を突破

1-4. Serverless Devsのコンセプト

  • OPEN SOURCE CONSTRUCTION
    • 開発者が貢献できるオープンソースの構築
  • OPEN ECOLOGY
    • npmやpypiと同様にオープンなエコシステムの考えを堅持
  • NO VENDOR LOCK
    • マルチクラウドやマルチプロダクトベースのアプリケーション開発を支援

1-5. Serverless Devsのメリット

ServerlessDevs-image-00002.PNG

  1. Easy deployment
    • マルチベンダーのプロジェクトやマルチクラウドのプロジェクトへ簡単にデプロイ
      • 製品サポート
        • Alibaba Cloud Function Compute
        • AWS Lambda
        • Baidu Cloud Function Compute(CFC)
        • HUAWEI CLOUD FunctionGraph
        • Tencent Cloud Serverless Cloud Function(SFC)
        • etc
  2. Open source development
    • オープンソースコードを使用したオープンなエコシステムの中でプロジェクトを開発
  3. Pluggable features
    • コンポーネントに関連するコマンドや機能をカスタマイズ可能
  4. Hands-on tutorials
    • 多様なシナリオに適用可能な複数のハンズオンを提供
  5. Full lifecycle management
    • 完全なライフサイクルでプロジェクト内のアプリケーションを管理
  6. Excellent integration
    • プロジェクトと従来のエコシステムへの統合が可能
        • GitHub Actionとの連携
        • Gitee Goとの連携
        • Jenkinsとの連携

1-6. Serverless Devsのツールチェーンシステム

  • Serverless Hub
    • コンポーネント、アプリケーション、ケースなどのリソースを提供
      • Docker Hubのようなもの
  • Serverless Registry
    • コンポーネントやアプリケーションを管理したり、仕様モデルを提供
      • Pypiやnpmのエコシステムのようなもの

1-7. Serverless Devsのロードマップ

  • プラットフォームのサポート2
    • Hosted
      • Azure
      • Google Cloud Platform
    • Installable
      • Knative
      • OpenWhisk
      • Kubeless
      • Laf
  • ファンクションサポート2
    • Serverless Devs K8s Controller
    • VScode Plugin
    • Serverless Devs Logs
    • Serverless Devs Cloud
    • Global Action
  • その他サポート2
    • より多くのサーバーレスサービスをサポート
    • より多くのBaaS製品への対応
    • IACの方向性の模索
    • Terraformとの連携

■ Let’s Get Started

1. Function Computeの実行(Serverless Devs)

Serverless Devsを利用してFunction Computeを作成および実行を行ってみます。

今回はdocsのQuick startを参考に前回と同様、PHPによる「Hello World」の表示までを行います。
前回の続きとなる為、「AliyunFcDefaultRoleロール」は作成済みの前提となります。

1.1. AlibabaCloudにサインイン

自分のアカウント(メールアドレス)とパスワードを入力の上、【サインイン】をクリックします。

FunctionCompute_10001.PNG

ログイン後に表示される「アカウントID」はServerlessDevsの初期設定の確認で利用しますので控えておいてください。

FunctionCompute_10001-id.PNG

1.2. RAM アクセス制御コンソール画面へ移動

今回のServerlessDevs実行ではAccessKeyが必要となりますが、プライマリアカウントのAccessKey発行は避けたほうがよい為、RAMユーザー(AWSでいうIAMユーザー)を作成の上、AccessKeyの発行を行います。

まずは画面上部の検索窓へ【Resource Access Management】を入力してRAM アクセス制御コンソール画面へ移動します。

FunctionCompute_10002.PNG

1.3. RAMユーザー作成

RAMアクセス制御の「ユーザー」を選択後、【ユーザーの作成】をクリックします。

FunctionCompute_10003.PNG

ユーザーの作成画面にて以下の項目を入力後、【OK】をクリックします。

FunctionCompute_10004.PNG

  • ログイン名
    • serverlessdevstest
  • 表示名
    • serverlessdevstest
  • アクセスモード
    • Open API によるアクセス

ユーザー作成後に表示される「AccessKey ID」および「AccessKey Secret」は控えておきます。
作成後はユーザーログイン名横のチェックボックスにチェックの上、【権限の追加】をクリックします。

FunctionCompute_10005.PNG

1.4. RAMユーザーへの権限追加

権限の追加画面に「AdministratorAccess」を選択の上、【OK】をクリックします。
今回の検証では「AdministratorAccess」を選択していますが、実環境では必要最小限の権限のみ選択するようにしてください。

FunctionCompute_10006.PNG

権限を付与確認後、【完了】をクリックします。

FunctionCompute_10007.PNG

1.5. CloudShellの起動

今回は検証の為、CloudShellよりServerlessDevsを実行します。
RAMユーザーへの権限追加完了後、画面上のメニューより【CloudShell】をクリックします。

FunctionCompute_10008.PNG

画面下にCloudShellのターミナルが表示されていることを確認します。

FunctionCompute_10009.PNG

1.6. Serverless Devs developer toolsの導入

CloudShellのターミナル上より以下のコマンドを実行してServerless Devs developer toolsを導入します。
CloudShell以外で導入する場合はNode.js12以降を導入後に実行してください。

npm install @serverless-devs/s -g

FunctionCompute_10009_1.PNG

1.7. Serverless Devsの初期設定

Serverless Devs developer toolsを導入後、以下のコマンドを実行します。

s config add

FunctionCompute_10010.PNG

Please select a providerにて「Alibaba Cloud(alibaba)」を選択

FunctionCompute_10011.PNG

AccessKeyIDおよびAccessKeySecretはRAMユーザー作成時に控えた値を入力、Key pairは何も入力せず「default」のままエンターを押します。

入力内容確認後、Configuration successful が表示されることを確認します。
AccountIDは「対象のアカウントID」であるかどうか確認してください。

FunctionCompute_10012.PNG

1.8. Serverless Devsのプロジェクト作成およびデプロイ

CloudShellのターミナル上より以下のコマンドを実行します。

s

No Serverless-Devs project is currently detected. do yu want to create a new project?にて「Y」を入力して新しいプロジェクトを作成します。

FunctionCompute_10013.PNG

プロジェクトの設定画面では以下の項目を入力または選択します。
最後に Do you want to deploy the project immediately? の項目に「Y」を入力することでプロジェクトのデプロイが開始されます。

FunctionCompute_10013.PNG

  • Hello Serverless for Cloud Vendors : Alibaba Cloud Serverless
    • Alibaba Cloudを選択
  • Hell, serverlesser. which template do you like? : Quick start [Deploy a Hello World function to FaaS]
    • QuickStartのHello Worldを選択
  • Wich template do you like? : [HTTP] PHP7
    • PHP7を選択
  • Please input your project name (init dir) : start-fc-http-php7
    • デフォルトのプロジェクト名を入力
  • please input region : ap-northeast-1
    • 東京リージョン(ap-northeast-1)を入力
  • please input serviceName : FirstServiceServerlessDevs
    • Function Computeのサービス名を入力(今回は「FirstServiceServerlessDevs」と入力)
  • please input : FirstFunctionServerlessDevs
    • Function Computeの関数名を入力(今回は「FirstFunctionServerlessDevs」と入力)
  • please select credential alias : default
    • デフォルトのエイリアスを選択

デプロイ完了後にデプロイ結果が表示されますので確認します。
デプロイ結果(今回の場合は「helloworld」以下)は動作確認にて必要となる為、控えておきます。

FunctionCompute_10014.PNG

デプロイ結果を控えていない場合は後ほど以下のコマンドを実行することで確認可能です。

cd [プロジェクト名]
s info

FunctionCompute_10014_1.PNG

その他のServerless DevsコマンドについてはDocのUser guide of commandsをご確認ください。

1.9. Serverless Devsプロジェクト作成後の動作確認

デプロイ結果に出力されているURLに対して、ブラウザ(Chromeなど)やコマンド(curlなど)で動作を確認します。

1.10. Serverless Devsプロジェクトで作成したFunction Computeの確認

ServerlessDevsのプロジェクトで作成したFunction Computeをコンソール画面から確認してみます。

Function Compute(サービス)

FunctionCompute_10015.PNG

Function Compute(関数)

FunctionCompute_10016.PNG

Function Compute(HTTPトリガー)

FunctionCompute_10017.PNG

Function Compute(ドメイン名)

FunctionCompute_10018.PNG

■ Next Time

次回はFunction Computeを利用したWebフレームワークをServerless Devsで実装してみたいと思います。

  1. https://github.com/Serverless-Devs/Serverless-Devs/blob/master/LICENSE

  2. https://github.com/Serverless-Devs/Serverless-Devs/blob/master/ROADMAP.md 2 3

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?