AWSのS3設定する
メディアファイルをAWS-S3にアップロードできるように設定します。
yarn add @strapi/provider-upload-aws-s3
./config/plugins.js にS3の設定値を書き込みます。
module.exports = ({ env }) => ({
upload: {
provider: 'aws-s3',
providerOptions: {
accessKeyId: env('AWS_ACCESS_KEY_ID'),
secretAccessKey: env('AWS_ACCESS_SECRET'),
region: env('AWS_REGION'),
params: {
Bucket: env('AWS_BUCKET_NAME'),
},
},
},
});
./config/middlewares.jsに設定値を書き込みます。
module.exports = ({ env }) => [
"strapi::errors",
{
name: "strapi::security",
config: {
contentSecurityPolicy: {
useDefaults: true,
directives: {
"connect-src": ["'self'", "https:"],
"img-src": ["'self'", "data:", "blob:", `${env("CDN_BASE_URL")}`],
"media-src": ["'self'", "data:", "blob:", `${env("CDN_BASE_URL")}`],
upgradeInsecureRequests: null,
},
},
},
},
"strapi::cors",
"strapi::poweredBy",
"strapi::logger",
"strapi::query",
"strapi::body",
"strapi::favicon",
"strapi::public",
];
DockerfileにAWSのKeyを設定します。
version: "3"
services:
strapi:
image: strapi/strapi
environment:
DATABASE_CLIENT: postgres
DATABASE_NAME: strapi
DATABASE_HOST: postgres
DATABASE_PORT: 5432
DATABASE_USERNAME: strapi
DATABASE_PASSWORD: strapi
AWS_ACCESS_KEY_ID: # 開発用BucketにアクセスできるIAMのKEY
AWS_ACCESS_SECRET: # 開発用BucketにアクセスできるIAMのSECRET
AWS_REGION: # AWSのREGION
AWS_BUCKET: # 開発用Bucket名
CDN_BASE_URL: # S3ベースURL 例:https:
動作確認をします。
dockerの再起動をし、アップロードできることを確認します。
# ctrl + cで既存のプロセスを終了後、下記コマンド入力でもう一度起動
docker-compose up
設定が正しいかを確認
ファイルのURLを確認し、正しいURLでアップロードされていることを確認します。
GraphQLを設定する
Strapiにgraphqlをインストールします。
初期状態ではgraphqlでデータを取得できません。
公式の提供するプラグインのインストールが必要です。
@strapi/plugin-graphqlのインストール
docker上でのインストールが必要なので、コンテナに入ります。
docker-compose run strapi bash
コンテナのbashで、下記コマンドを実行します。
yarn add @strapi/plugin-graphql
GraphQLの読取権限の付与
次に、アクセス権限の設定を行います。
初期設定では、外部からの読取書込権限がありませんので、権限を付与します。
Settings>User&Permissions plugin>Roleから、Pluginを選択します。
前述の「データモデルを作る」で作成したモデルを選び、findとfindOneにチェックボックスをオンにし「save」します。
GraphQLの実行をテスト
http://localhost:1337/graphql にアクセスすると、GraphQLのplaygroundが起動します。
autocompleteがききますので、導かれるままにクエリを組み上げていくことで、データを取得することができるようになります。
また、特定のモデルのコレクションを取得したい場合は下記のクエリで取得できます。
クライアントからアクセスするエンドポイント
なおクライアント側からリクエストするエンドポイントも、http://localhost:1337/graphql になります。
以上がローカル開発環境の解説でした。
大きく下記の4点を行いました。
ここまででやったことの復習
Docker-imageを作り、Strapiを起動する
最初のテーブルを作りレコードを追加する
AWSのS3設定する
GraphQLを設定する
ローカルで開発をすすめていきましょう
ここまでの流れでローカルで開発を進めることができるようになりました。
自分の作りたいテーブルを追加していき、gitにcommitしていきながら開発を進めていきます。
何の特殊なことはない、通常通りの開発です。