Skip to content

AWS

Amazon Linux 2023 + GitLab で TCP/22 を GitLab 用に設定する

先日、Amazon Linux 2023 へ GitLab をインストールする というメモを書きました。 公式サイトの gitlab-sshd によると Omnibus 版 GitLab の場合、GitLab で SCP 機能を有効化する場合は以下の設定をしろ、という記載があります。

/etc/gitlab/gitlab.rb
gitlab_sshd['enable'] = true
gitlab_sshd['listen_address'] = '[::]:2222' # Adjust the port accordingly

ですが、OS 標準の sshd を TCP/22 以外へ設定し、その代わりに GitLab に TCP/22 を利用させようとしても「GitLab がポートを Listen しない」という事象が起こりました。 この問題を解決するには以下のように capset 実行します。

sudo setcap 'cap_net_bind_service=+ep' /opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-sshd

その上で GitLab の設定ファイルである /etc/gitlab/gitlab.rb へ以下のように設定します。

/etc/gitlab/gitlab.rb
gitlab_sshd['enable'] = true
gitlab_sshd['listen_address'] = '0.0.0.0:22'

あとは GitLab を再起動します。

sudo gitlab-ctl reconfigure

これで GitLab が TCP/22 を Listen するようになりました。

Amazon Linux 2023 へ GitLab をインストールする

以前に以下のメモを書きました。

インストール手順は公式サイトの GitLab Self-Managedのインストール に記載されています。 今回は Amazon Linux 2023 へ GitLab をインストールする手順をメモしておきます。

AWS CLI で CloudFront のキャッシュを削除する

awscli から CloudFront のキャッシュ削除 (Create Invalidation) を行うには以下のように実行します。

aws cloudfront create-invalidation --distribution-id ABCD0123456789 --paths "/T*"

これを実行するには IAM で最低限、下記の権限が付与されている必要があります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CFResourceLevelPermission",
      "Effect": "Allow",
      "Action": ["cloudfront:CreateInvalidation"],
      "Resource": "arn:aws:cloudfront::012345678901:distribution/ABCD0123456789"
    }
  ]
}

AWS CloudFront のオリジンに IP アドレスは指定出来ない

現時点で AWS CloudFront で実際のコンテンツを配信するオリジンには IP アドレスを直接、指定することは出来ません。

file

Distribution settings reference には以下の記載があります。 「直接、IP アドレスを指定することは出来ない」と書かれているわけでは無いようですが、「DNS ドメイン名を指定しろ」という記載には読めます。

The origin domain is the DNS domain name of the resource where CloudFront will get objects for your origin, such as an Amazon S3 bucket or HTTP server. For example:

  • Amazon S3 bucket – amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com

AWS Organizations へ 既存の AWS アカウントを追加する

新規に AWS アカウントを作成すると、通常はスタンドアロンアカウントになります。 スタンドアロンアカウントはアカウント毎に「請求情報を管理する」「ユーザ権限を管理する」必要があります。 組織や企業で AWS を利用し、アカウント数が増えてくるとスタンドアロンアカウントでは集中管理出来ず、管理コストが大きくなります。

AWS Organizations を使うと「ひとつの管理アカウント」と「複数のメンバーアカウント」に分けて集中的に AWS アカウントを管理することが出来ます。 請求は全て「管理アカウント」に対して行われます。

また、スタンドアロンアカウントは新規作成時に「認証」「請求情報の入力」が必須になり、手間と時間がかかります。 対して AWS Organizations にメンバーアカウントを追加する際は請求情報などの入力は不要である為、非常に簡単です。 メンバーアカウントは「新規追加 (作成) する」ことも出来ますが、「既存のスタンドアロンアカウントを追加する」ことも可能です。 今回は「AWS Organizations へ既存のスタンドアロンアカウントを追加する」手順をメモしておきます。