Closed11
github codespacesメモ
他のリポジトリへのアクセス権限を設定
devcontainers.jsonでこんな感じ
環境は再作成する必要がありそう
"codespaces": {
"repositories": {
"<org>/<repo>": {
"permissions": {
"contents": "write"
}
}
}
}
gh cliでcodespace周りの操作
codespaceを操作する権限が必要
$ gh auth status
- Token scopes: 'codespace', 'gist', 'read:org', 'repo'
操作
対話形式で選択できるものが多くて親切
# codespace作成(対話形式)
$ gh codespace create
# codespace作成(オプション)
$ gh codespace create \
--display-name dev \
--repo <org>/<repo> \
--branch main \
--machine basicLinux32gb
# 一覧
$ gh codespace list
# codespaceの詳細を出力
$ gh codespace view
# 停止(対話形式)
$ gh codespace stop
# 削除(対話形式)
$ gh codespace delete
# vscodeでcodespacesへ接続(対話形式)
$ gh codespace code
vscodeでcodespaceを操作するには拡張機能
が必要です
private repositoryのコンテナイメージを利用する
codespaceで動作させるイメージはECRから引っ張ってきます。
今回は前者のアクセスキー方式を利用します。
予めIAMユーザを作成し、↓のようにシークレットを作成すればOK
*_CONTAINER_REGISTRY_SERVER = <ECR_URL>
*_CONTAINER_REGISTRY_USER = <AWS_ACCESS_KEY_ID>
*_CONTAINER_REGISTRY_PASSWORD = <AWS_SECRET_KEY>
codespace用のイメージをGHAでビルドする
dockerfileに修正が加わったら起動
あとはECRの<repo>:codespace-latest
イメージをURI指定すればよい
build-codespace-image.yaml
name: build codespace image
on:
push:
branches:
- main
paths:
- 'dockerfile'
workflow_dispatch:
jobs:
push:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- uses: aws-actions/configure-aws-credentials@v4
env:
AWS_REGION: ap-northeast-1
with:
role-to-assume: ${{ secrets.AWS_IAM_ROLE_ARN }}
aws-region: ${{ env.AWS_REGION }}
- name: Login to Amazon ECR Private
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
- name: docker build and push ECR
uses: docker/build-push-action@v5
env:
ECR_REPO: <repo名>
with:
platforms: linux/amd64
file: ./dockerfile
push: true
tags: ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPO }}:codespace-latest
provenance: false
ビルドしたイメージでawscliが使えなかったメモ
どこかで記事にしたい
awscliが使えなかったメモ
エラー内容
root@9077a3c6b7c6:/workspace# aws --version
aws-cli/2.17.13 Python/3.11.9 Linux/6.5.0-1022-azure exe/x86_64.debian.12
root@9077a3c6b7c6:/workspace# aws s3 ls
<botocore.awsrequest.AWSRequest object at 0x72aa40352490>
root@9077a3c6b7c6:/workspace# aws sts get-caller-identity
<botocore.awsrequest.AWSRequest object at 0x7f3b90793bd0>
①ビルド時のenvにAWS_DEFAULT_REGION追加(うまくいかず)
- name: docker build and push ECR
uses: docker/build-push-action@v5
env:
ECR_REPO: <repo>
AWS_DEFAULT_REGION: ap-northeast-1
②ビルド時のenvにAWS_DEFAULT_REGION追加(うまくいかず)
- name: docker build and push ECR
uses: docker/build-push-action@v5
env:
ECR_REPO: <repo>
AWS_EC2_METADATA_DISABLED: true
③1.2を両方やる(うまくいかず)
- name: docker build and push ECR
uses: docker/build-push-action@v5
env:
ECR_REPO: <repo>
AWS_DEFAULT_REGION: ap-northeast-1
AWS_EC2_METADATA_DISABLED: true
④Dockerfile側に追加(うまくいった)
## install awscli
ENV AWS_DEFAULT_REGION="ap-northeast-1" \
AWS_EC2_METADATA_DISABLED=true
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
./aws/install
root@518b3b33456b:/workspace# aws --version
aws-cli/2.17.13 Python/3.11.9 Linux/6.5.0-1022-azure exe/x86_64.debian.12
root@518b3b33456b:/workspace# aws sts get-caller-identity
Unable to locate credentials. You can configure credentials by running "aws configure".
root@518b3b33456b:/workspace# aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
docker in docker
これでOK
AWSの認証情報
Codespaces secretsへ環境変数を追加することで対応
AWS_DEFAULT_REGION=XXXXXXXX
AWS_SECRET_ACCESS_KEY=XXXXXXXX
AWS_ACCESS_KEY_ID=XXXXXXXX
organizationでcodespacesを使う
有効化
こちらの手順に従う。
わたしのorganization環境では有効化されていませんでした
有効化しないとこんなログが出てcodespaceが作れない
error checking codespace ownership: you cannot create codespaces with that repository
PATに権限追加
これで動いたけど精査できていない
エラーログはこんなの
error getting devcontainer.json paths: HTTP 403: Resource not accessible by personal access token
ownershipを個人にする
orgではなくユーザに紐付けました。これもあまり精査できていない
エラーログはこんなの
error creating codespace: HTTP 402: Usage not allowed: <org> cannot be billed for new codespaces
ポート設定
ターミナルのポートから設定すればよし
AWSにも接続できる、DinDもできる
満足、終
追加メモ
- docker-compose.yamlで新規コンテナを追加した場合はfull buildが必要
このスクラップは4ヶ月前にクローズされました