ユースカジノ チャット活用の答えは、CTC。」ユースカジノ 最低出金額 <,AWSセッションレポート<,[SVS404-R1]ユースカジノ 入金不要ボーナス コード で Custom resources を作成する

ユースカジノ 入金不要ボーナス コード で Custom resources を作成する

はじめに

こんにちは、ユースカジノ 入金不要ボーナス コードの山本です。
本記事では、Custom Resource Provider Frameworkを用いたユースカジノ 入金不要ボーナス コードでカスタムリソース実装方法の解説していきたいと思います。

具体的な内容は以下になります。

Custom Resources について

Custom Resources とは

Custom Resources (カスタムユースカジノ 入金不要ボーナス コード) とは、CloudFormationからの「Create/Update/Delete」イベントをLambda や SNS に関連付けて処理する仕組みを実装することでCloudFormationを拡張する仕組みとなります。
CloudFormation のユースカジノ 入金不要ボーナス コードタイプに存在しなかったり、独自の処理でプロビジョニングを行いたい場合は、カスタムユースカジノ 入金不要ボーナス コードの仕組みを用いてユースカジノ 入金不要ボーナス コードの構成管理ができます。

ユースカジノ 入金不要ボーナス コード

参考:AWS/Documentation/AWS CloudFormation/User Guide/Custom resources

【参考】 CloudFormation レジストリ

また、カスタムユースカジノ 入金不要ボーナス コードとは別に、CloudFormation レジストリという仕組みもあります。
こちらはLambdaやSNSの関連付けが不要、ドリフト検出をサポートする等、AWS が提供するユースカジノ 入金不要ボーナス コードタイプと同じような使用かできるといった利点があるため、しっかりと構築する場合はこちらが候補になるでしょう。

CloudFormationの拡張方法

CloudFormation拡張方法 説明
Custom Resources(カスタムユースカジノ 入金不要ボーナス コード) CloudFormationからの「Create/Update/Delete」イベントをLambda や SNS に関連付けてユースカジノ 入金不要ボーナス コードする仕組みを実装することで拡張する仕組み。
CloudFormation レジストリ AWS アカウント で使用できるユースカジノ 入金不要ボーナス コード、モジュール、フックの拡張を管理できる仕組み。AWS が提供するユースカジノ 入金不要ボーナス コードタイプと同じように使用できるようになる。

ユースカジノ 入金不要ボーナス コード における Custom Resources

ユースカジノ 入金不要ボーナス コード では、以下のCustom Resourcesの実装手段があります。

ユースカジノ 入金不要ボーナス コード における Custom Resourcesの実装方法

カスタムユースカジノ 入金不要ボーナス コードプロバイダーの実装方法 特徴
SNS Topic
  • SNSを使用してユースカジノ 入金不要ボーナス コード一から実装する方法
  • カスタムユースカジノ 入金不要ボーナス コードの処理が AWS Lambda で実行できない事情がある時のみ使用を検討することを推奨
AWS Lambda Function
  • Lambdaを使用してユースカジノ 入金不要ボーナス コード一から実装する方法
  • ユースカジノ 入金不要ボーナス コード では、基本的に後述するCustom Resource Provider Frameworkを使用することを推奨している
core.CustomResourceProvider class
  • ユースカジノ 入金不要ボーナス コード実装するための低レベルなAPIを提供するフレームワーク
  • カスタムユースカジノ 入金不要ボーナス コードのConstruct Library を構成するために存在しており、通常のユースケースでの使用は非推奨。
Custom Resource Provider Framework (推奨)
  • ユースカジノ 入金不要ボーナス コード実装するための高レベルなAPIを提供するフレームワーク
  • タイムアウトユースカジノ 入金不要ボーナス コードやCloudFormationへの応答ユースカジノ 入金不要ボーナス コード等をフレームワーク側が管理
  • ユースカジノ 入金不要ボーナス コードでは、カスタムリソースを実装する場合、こちらの利用を推奨している。

ユースカジノ 入金不要ボーナス コードでは、カスタムリソースプロバイダーに必要な処理の実装支援を提供するCustom Resource Provider Frameworkの使用が推奨されています。

参考:AWS ユースカジノ 入金不要ボーナス コード Reference Documentation / Custom Resources

Provider Framework を用いたユースカジノ 入金不要ボーナス コードの実装方法

Custom Resource Provider Framework を用いたカスタムユースカジノ 入金不要ボーナス コードの実装方法について基本的な内容を説明します。

本記事では、以下のProvider Frameworkの公式ドキュメントを参考に要点を嚙み砕いて説明するとともに、正確であることを心掛けてはおりますが、 より詳細かつ正確で最新な情報を求める方は直接公式ドキュメントを参照して頂けますと幸いです。

参考:AWS ユースカジノ 入金不要ボーナス コード Reference Documentation / Provider Framework

Provider Framework を用いたユースカジノ 入金不要ボーナス コードコードの構成

Provider Framework を用いたユースカジノ 入金不要ボーナス コードの実装イメージは以下になります。

ユースカジノ 入金不要ボーナス コード

Provider Frameworkを利用する際、ユースカジノ 入金不要ボーナス コードでは以下の要素を実装する必要があります。

  • Lambda (onEvent handler)
  • Provider Construct
  • CustomResource

以下、各実装要素に絞って説明していきます。
記事後半にてサンプルコードがありますので、合わせてご覧ください。

Lambda (onEvent handler)

ユースカジノ 入金不要ボーナス コードのライフサイクルイベント(Create / Update/ Delete)に対応する処理をLambdaで実装します。

実装に当たって、最低限、抑えて置く必要がある要素に絞って説明します。
(※実装するユースカジノ 入金不要ボーナス コードの内容によっては以下の限りではありませんが、一般的な使用方法の観点で説明します。)

onEvent ユースカジノ 入金不要ボーナス コードの実装のポイント

  • 「Create / Update/ Delete」の情報は Lambdaの入力イベントのオブジェクトに含まれるRequestTypeから取得できるため、このフラグに応じて、イベントを判別します。
  • 要求されるユースカジノ 入金不要ボーナス コードの状態(CustomResourceで定義したproperties)は入力イベントのオブジェクトに含まれるResourcePropertiesから取得できるため、この内容に合わせて、管理するユースカジノ 入金不要ボーナス コードの状態を変更する処理を実装していきます。
  • 戻り値のオブジェクトのPhysicalResourceIdパラメータには、生成したユースカジノ 入金不要ボーナス コードの物理IDを返すようにします。※物理ユースカジノ 入金不要ボーナス コードIDについては後述で説明
  • 「Update/ Delete」イベントでは、入力イベントのオブジェクトに含まれるPhysicalResourceIdを取得して、このユースカジノ 入金不要ボーナス コードに対して更新・削除するように処理を実装します。

※本記事における該当箇所のコード例はこちら

Provider Construct

Provider Frameworkを使用して、ユースカジノ 入金不要ボーナス コード作成します。
Provider Frameworkにより、CloudFormationとのやり取り等の大部分のユースカジノ 入金不要ボーナス コードが管理されるため、実装を大幅に簡略化できます。

Provider Frameworkにより管理されるユースカジノ 入金不要ボーナス コード

  • AWS CloudFormation への応答ユースカジノ 入金不要ボーナス コード
  • ハンドラーの戻り値の検証と実装支援
  • タイムアウトの管理
  • 物理ユースカジノ 入金不要ボーナス コード ID の管理

最低限、onEvent handler Lambdaを関連付けるだけで、カスタムユースカジノ 入金不要ボーナス コードプロバイダーが作成できます。

※本記事における該当箇所のコード例はこちら

CustomResource

カスタムユースカジノ 入金不要ボーナス コードのコンストラクトを作成します。
最低限、以下のユースカジノ 入金不要ボーナス コードを実装します。

実装のポイント

  • ユースカジノ 入金不要ボーナス コードserviceTokenに指定する
  • カスタムユースカジノ 入金不要ボーナス コードプロバイダーに渡すプロパティをpropertiesに指定する。

※本記事における該当箇所のコード例はこちら

物理ユースカジノ 入金不要ボーナス コードIDについての補足説明

Physical Resource IDs(物理ユースカジノ 入金不要ボーナス コードID)とは

物理ユースカジノ 入金不要ボーナス コードIDはCloudFormationで管理されるユースカジノ 入金不要ボーナス コードのIDです。
公式ドキュメントを要約すると、物理ユースカジノ 入金不要ボーナス コードIDは以下のような説明がされています。

  • ユースカジノ 入金不要ボーナス コードserviceTokenに指定する
  • Createオペレーションで、明示的に物理ユースカジノ 入金不要ボーナス コードIDを返さない場合は、フレームワークにより、リクエストIDが設定される
  • Updateオペレーションで、デフォルトの処理としては、現行の物理ユースカジノ 入金不要ボーナス コードIDを返す。
  • Updateオペレーションで、onEventが現行の物理ユースカジノ 入金不要ボーナス コードIDと異なる物理ユースカジノ 入金不要ボーナス コードIDを返した場合、CloudFormation上、置換処理として扱う。

すなわち、物理ユースカジノ 入金不要ボーナス コードIDはUpdate、Delete イベントの処理の中で、更新・削除対象のユースカジノ 入金不要ボーナス コードのキー情報としての役割で使用します。
そのため、実装する処理にもよりますが、管理対象ユースカジノ 入金不要ボーナス コードに対応するSDKのAPIのキーとなる情報を設定するのがよいでしょう。
大抵は管理対象のユースカジノ 入金不要ボーナス コードのARNやユースカジノ 入金不要ボーナス コードID等を物理ユースカジノ 入金不要ボーナス コードIDとして設定する形になるかと思います。

なお、論理IDと物理ユースカジノ 入金不要ボーナス コードIDはCloudFormationのマネージドコンソール上から確認できます。

ユースカジノ 入金不要ボーナス コード

物理ユースカジノ 入金不要ボーナス コードIDと更新処理

前述でも触れましたが、Update処理で返却する物理ユースカジノ 入金不要ボーナス コードIDによって、CloudFormationが発行するオペレーション処理が変わりますので、実装時にどちらの処理が適切か留意して実装する必要があります。

  • Updateイベントの中で、プロバイダーが既存と同じ物理ユースカジノ 入金不要ボーナス コードIDを返した場合は、通常の更新処理となる。
  • Updateイベントの中で、プロバイダーが既存と異なる物理ユースカジノ 入金不要ボーナス コードIDを返した場合、更新が置換処理の扱いとなり、CloudFormationは続けて既存ユースカジノ 入金不要ボーナス コードに対するDeleteオペレーションを発行する挙動となる。

図にすると以下のようなイメージです。

エラー時のユースカジノ 入金不要ボーナス コードの考慮

CloudFormationのユースカジノ 入金不要ボーナス コードの中でエラーが発生すると、ロールバックユースカジノ 入金不要ボーナス コードが実行されますので、ロールバック動作にも留意して実装する必要があります。
Provider Framework のドキュメントを読み解くと、Provider Frameworkでは、エラー時の動作は以下のようになると説明されています。

Create イベントで失敗した場合

  • ユースカジノ 入金不要ボーナス コードの生成に失敗した場合、プロバイダーフレームワークはDeleteオペレーションを無視する。
  • 必要に応じて、エラーハンドリングとして、クリーンアップユースカジノ 入金不要ボーナス コードを実装する必要がある。

Update イベントで失敗した場合

  • ユースカジノ 入金不要ボーナス コードの更新に失敗した場合、CloudFormationからResourcePropertiesOldResourcePropertiesの内容が入れ替えられたUpdate オペレーションが発行される。
  • 異なる物理ユースカジノ 入金不要ボーナス コードIDが返した後(置換アップデートの後)、更新に失敗した場合は、クリーンアップの為、新しく作成したユースカジノ 入金不要ボーナス コードに対する Delete オペレーションが発行される。

Delete イベントで失敗した場合

  • ユースカジノ 入金不要ボーナス コードの削除に失敗した場合、CloudFormationはユースカジノ 入金不要ボーナス コードを放棄する。

カスタムユースカジノ 入金不要ボーナス コードの処理として、他のコンストラクトで管理するユースカジノ 入金不要ボーナス コードとの複数の関連や、複数のAPIを実行するような処理を検討する場合は、多くのユースケースに対応する必要性が発生してしまいます。
個人的な所感ですが、カスタムコンストラクトのユースカジノ 入金不要ボーナス コードの中で多くのことを行わず、可能な限りシンプルに設計するのが良いかと思います。

AwsCustomResource コンストラクト

AWS API を1つだけ呼び出すような処理のカスタムユースカジノ 入金不要ボーナス コードを作成したい場合、Custom Resource Provider Frameworkでは、AwsCustomResourceコンストラクトが用意されています。
AwsCustomResourceコンストラクトを使用する場合、イベントユースカジノ 入金不要ボーナス コードの実装をフレームワーク側が支援してくれるため、Lambdaのハンドラユースカジノ 入金不要ボーナス コードのコードの実装が不要になります。

※本記事における該当箇所のコード例はこちら

Provider Framework を使用したユースカジノ 入金不要ボーナス コードのサンプル実装

本記事では、ユースカジノ 入金不要ボーナス コード (Typescript)で Provider Framework を用いた簡単な実装(ECR プライベートレジストリのスキャン設定のプロビジョニング)を実演したいと思います。
ECR プライベートレジストリのスキャン設定の変更は公式のCloudFormation ユースカジノ 入金不要ボーナス コードタイプでサポートされていないため、こちらを題材にしました。

注意!
本記事のコードを実行すると、ECR プライベートレジストリのスキャン設定が変更されるとともに、Inspector がActive になり、利用料金が発生する可能性があります。
本記事のコードを実行する場合は、内容を理解した上で自己責任で実施をお願いします。

実装対象の説明

ECR プライベートレジストリのスキャン設定は以下の2つの要素で構成されます。

  • スキャンタイプ
  • リポジトリフィルタ

仕様の検討

対応するSDKの調査

プロビジョニングユースカジノ 入金不要ボーナス コードはLambda(Node.js)でユースカジノ 入金不要ボーナス コードするものとして、ECR プライベートレジストリのスキャン設定に対応するSDKのライブラリを調べます。

SDKのリファレンスによるとPutRegistryScanningConfigurationCommandでユースカジノ 入金不要ボーナス コードできそうです。

AWS SDK for JavaScript v3 / PutRegistryScanningConfigurationCommand

各ライフサイクルイベントのユースカジノ 入金不要ボーナス コードを考える

次に、「Create/Update/Delete」イベントに対してどのようなユースカジノ 入金不要ボーナス コードを実装するか検討します。
本記事では、次のように実装するものとします。

ライフサイクルイベント ユースカジノ 入金不要ボーナス コード
Create 「指定されたスキャンタイプ」、「リポジトリフィルタ」の状態にECR プライベートレジストリのスキャン設定を変更する。
Update 「指定されたスキャンタイプ」、「リポジトリフィルタ」の状態にECR プライベートレジストリのスキャン設定を変更する。
Delete 「スキャンタイプ = "Basic"」、「リポジトリフィルタ = 未設定」の状態(出荷時の状態)に変更する。

ユースカジノ 入金不要ボーナス コード の実装

ユースカジノ 入金不要ボーナス コードプロジェクトの作成

以下を実行して、ユースカジノ 入金不要ボーナス コードプロジェクトを作成します。

mkdir ユースカジノ 入金不要ボーナス コード-cr-ecr-registry
  cd ユースカジノ 入金不要ボーナス コード-cr-ecr-registry
  ユースカジノ 入金不要ボーナス コード init app --language typescript

また、以下も必要となるため、追加でインストールします。

npm install -D @types/aws-lambda # lambdaの型定義
  npm i -S @aws-sdk/client-ecr # AWS SDKのclient-ecr モジュール

ディレクトリ構成

コードのディレクトリ構成とファイル名は以下のようにします。

.
  ├── bin
  │   └── ユースカジノ 入金不要ボーナス コード-cr-ecr-registry.ts // プログラムのエントリーポイント
  └── lib
      ├── ユースカジノ 入金不要ボーナス コード-cr-ecr-registry-stack.ts // スタックを定義
      └── construct
          ├── ecr-registry-scanning-configuration-construct.ts // ECR プライベートレジストリのスキャン設定を扱うカスタムコンストラクトを定義
          └── src
              └── index.ts // カスタムリソースのイベントハンドラ (lambda) を実装

エントリーポイント (bin/ユースカジノ 入金不要ボーナス コード-cr-ecr-registry.ts)

  • ユースカジノ 入金不要ボーナス コードコードのエントリーポイントとなります。
  • 後述するスタックユースカジノ 入金不要ボーナス コードCrEcrRegistryStackを呼び出しています。
#!/usr/bin/env node
  import "source-map-support/register";
  import * as ユースカジノ 入金不要ボーナス コード from "aws-ユースカジノ 入金不要ボーナス コード-lib";
  import { ユースカジノ 入金不要ボーナス コードCrEcrRegistryStack } from "../lib/ユースカジノ 入金不要ボーナス コード-cr-ecr-registry-stack";

  const app = new ユースカジノ 入金不要ボーナス コード.App();
  new ユースカジノ 入金不要ボーナス コードCrEcrRegistryStack(app, "ユースカジノ 入金不要ボーナス コードCrEcrRegistryStack", {});

スタック (lib/ユースカジノ 入金不要ボーナス コード-cr-ecr-registry-stack.ts)

  • スタックユースカジノ 入金不要ボーナス コードCrEcrRegistryStackの定義となります。
  • カスタムコンストラクトEcrRegistryScanningConfigurationConstructにECR プライベートレジストリのスキャン設定を渡してユースカジノ 入金不要ボーナス コードを変更します。
import * as ユースカジノ 入金不要ボーナス コード from "aws-ユースカジノ 入金不要ボーナス コード-lib";
  import { Construct } from "constructs";
  import { EcrRegistryScanningConfigurationConstruct } from "./construct/ecr-registry-scanning-configuration-construct2";

  export class ユースカジノ 入金不要ボーナス コードCrEcrRegistryStack extends ユースカジノ 入金不要ボーナス コード.Stack {
    constructor(scope: Construct, id: string, props?: ユースカジノ 入金不要ボーナス コード.StackProps) {
      super(scope, id, props);

      new EcrRegistryScanningConfigurationConstruct(
        this,
        "EcrRegistryScanningConfiguration",
        {
          scanType: "ENHANCED",
          rules: [
            {
              scanFrequency: "CONTINUOUS_SCAN",
              repositoryFilters: [{ filter: "prd-*", filterType: "WILDCARD" }],
            },
            {
              scanFrequency: "SCAN_ON_PUSH",
              repositoryFilters: [{ filter: "dev-*", filterType: "WILDCARD" }],
            },
          ],
        }
      );
    }
  }

カスタムコンストラクト ( lib\construct\ecr-registry-scanning-configuration-construct.ts)

  • ECR プライベートレジストリのスキャン設定を扱うカスタムコンストラクトの定義となります。
  • 内部でProvider ConstructCustomResourceLambda (onEvent handler)を作成し、カスタムユースカジノ 入金不要ボーナス コードを実装します。

  import { Construct } from "constructs";
  import * as cdk from "aws-cdk-lib";
  import * as cr from "aws-cdk-lib/custom-resources";
  import * as iam from "aws-cdk-lib/aws-iam";
  import * as nodejsLambda from "aws-cdk-lib/aws-lambda-nodejs";
  import * as lambda from "aws-cdk-lib/aws-lambda";
  import * as path from "path";
  import { ResourceProperties } from "./src/index";

  export class EcrRegistryScanningConfigurationConstruct extends Construct {
    constructor(scope: Construct, id: string, props: ResourceProperties) {
      super(scope, id);

      // IAM Policy を作成
      const policyStatement = new iam.PolicyStatement({
        effect: iam.Effect.ALLOW,
        actions: [
          "ecr:PutRegistryScanningConfiguration",
          "inspector2:ListAccountPermissions",
          "inspector2:Disable",
          "inspector2:Enable",
          "iam:CreateServiceLinkedRole",
        ],
        resources: ["*"],
      });
      // カスタムリソースのイベントハンドラ (Lambda Function)を作成
      const lambdaFunction = new nodejsLambda.NodejsFunction(
        this,
        "OnEventHandler",
        {
          runtime: lambda.Runtime.NODEJS_18_X,
          entry: path.join(__dirname, "./src/index.ts"),
          handler: "handler",
          initialPolicy: [policyStatement],
        }
      );
      // カスタムリソースプロバイダーを作成
      const provider = new cr.Provider(this, "Provider", {
        onEventHandler: lambdaFunction,
      });
      // カスタムリソース作成
      new cdk.CustomResource(this, "CustomResource", {
        serviceToken: provider.serviceToken,
        properties: props,
      });
    }
  }

onEvent handler (lib\construct\src\index.ts)

  • Lambda (onEvent handler)の実装となります。
  • SDKを呼びだして、ECR プライベートレジストリのスキャン設定を変更します。
  • 更新対象にIDは必要ないので、物理IDは特に設定していません。
{
    // ResourcePropertiesに更新対象のプロパティが含まれる。
    const properties: ResourceProperties = {
      scanType: event.ResourceProperties.scanType,
      rules: event.ResourceProperties.rules,
    };
    // RequestTypeにイベントフラグが含まれる。
    // RequestTypeに応じて各ユースカジノ 入金不要ボーナス コードを実装。
    switch (event.RequestType) {
      case "Create":
        await onCreate(properties);
        return {};
      case "Update":
        await onUpdate(properties);
        return {};
      case "Delete":
        await onDelete();
        return {};
      default:
        throw new Error("Failed");
    }
  };

  /**Create のユースカジノ 入金不要ボーナス コード */
  async function onCreate(
    props: ResourceProperties
  ): Promise{
    const command = new PutRegistryScanningConfigurationCommand(props);
    const result = await client.send(command);
    return result;
  }

  /**Update のユースカジノ 入金不要ボーナス コード */
  async function onUpdate(
    props: ResourceProperties
  ): Promise{
    const command = new PutRegistryScanningConfigurationCommand(props);
    const result = await client.send(command);
    return result;
  }

  /**Delete のユースカジノ 入金不要ボーナス コード */
  async function onDelete(): Promise{
    // Deleteユースカジノ 入金不要ボーナス コードでは、デフォルト設定に戻す。
    const input: PutRegistryScanningConfigurationCommandInput = {
      rules: [],
      scanType: "BASIC",
    };
    const command = new PutRegistryScanningConfigurationCommand(input);
    const result = await client.send(command);
    return result;
  }

動作確認

「Create/Update/Delete」イベントの各ユースカジノ 入金不要ボーナス コードが正常にユースカジノ 入金不要ボーナス コードされるか確認します。

「Create/Update/Delete」イベントの正常系の動作に関しては、正常に動作しているようです。
なお、本記事では記載していませんが、異常系のユースカジノ 入金不要ボーナス コード(ロールバック時のユースカジノ 入金不要ボーナス コード等)についても動作確認をする必要があります。

AwsCustomResource で実装した場合

前述のカスタムユースカジノ 入金不要ボーナス コードは単純にPutRegistryScanningConfigurationCommandを使用するだけなので、実は、
AwsCustomResourceを使用してさらに簡単に実装することが可能です。

AwsCustomResource のコード

  • 前述のecr-registry-scanning-configuration-construct.tsを以下のコードで置換すると同様のユースカジノ 入金不要ボーナス コードがAwsCustomResourceで実現できます。
  • また、Lambda (onEvent handler)ユースカジノ 入金不要ボーナス コードのlib\construct\src\index.tsも不要です。
AwsCustomResource

まとめ

ユースカジノ 入金不要ボーナス コードでは、Provider Frameworkがカスタムリソースのコントロールの大部分を管理してくれるため、カスタムリソースを比較的に簡単に実装できます。
また、プロビジョニングの各ユースカジノ 入金不要ボーナス コードが1つのSDKのAPIのみで完結するのであれば、AwsCustomResourceを使用することで、Lambdaの実装自体も不要となります。
しかしながら、今回は簡単な例でしたので動作に特に問題ありませんでしたが、参照関係を含んだり、複雑な処理を含む処理のカスタムユースカジノ 入金不要ボーナス コードを作成する場合、様々なユースカジノ 入金不要ボーナス コードの状態を考慮して実装する必要があります。
中途半端な実装のカスタムユースカジノ 入金不要ボーナス コードをプロダクション環境に導入した場合、最悪、ロールバックに失敗し、スタックが壊れる可能性もありますので、入念にテストしてから導入しましょう。

ユースカジノ 入金不要ボーナス コードは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にユースカジノ 登録ください。

ユースカジノ 登録



【著者プロフィール】

山本 和輝(やまもと かずき)

伊藤忠テクノソリューションズ株式会社 クラウドアーキテクト

クラウドネイティブ技術を活用したシステム基盤の提案・構築や内製化支援等の案件を担当。

pagetop