asdf

Anoy@ยท2026๋…„ 4์›” 7์ผ

Shared network storage( EFS )

์•„ํ‚คํ…์ณ 1

์ข‹์•„์š” ๐Ÿ‘ ๋‚ด์šฉ์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ตฌ์กฐ๋งŒ ์ •๋ฆฌ + ๊ฐ€๋…์„ฑ ๊ฐœ์„ ํ•ด์„œ ๊น”๋”ํ•˜๊ฒŒ ๋‹ค์‹œ ์ •๋ฆฌํ•ด๋“œ๋ฆด๊ฒŒ์š”.


๐Ÿ“Œ ์•„ํ‚คํ…์ฒ˜ ์„ค๋ช…

์ด ์•„ํ‚คํ…์ฒ˜๋Š” IAM ๊ถŒํ•œ์„ ์ด์šฉํ•˜์—ฌ EC2 3๋Œ€ ์ค‘ 2๋Œ€๋งŒ EFS๋ฅผ ๊ณต์œ ํ•˜๊ณ , ๋‚˜๋จธ์ง€ 1๋Œ€๋Š” ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

๐Ÿ” IAM ๊ถŒํ•œ ๋ถ„๋ฆฌ ์ „๋žต

  • EC2 2๋Œ€
    • ClientMount + ClientWrite โ†’ ๋งˆ์šดํŠธ + ์ฝ๊ธฐ/์“ฐ๊ธฐ ๊ฐ€๋Šฅ
  • EC2 1๋Œ€
    • ์„ ํƒ 1: ๋งˆ์šดํŠธ ๊ถŒํ•œ ์—†์Œ โ†’ ์ ‘๊ทผ ๋ถˆ๊ฐ€
    • ์„ ํƒ 2: ClientMount๋งŒ โ†’ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ
    • ์„ ํƒ 3: ๋‘˜ ๋‹ค ์—†์Œ โ†’ ์™„์ „ ์ฐจ๋‹จ

๐Ÿ“Œ ์•„ํ‚คํ…์ฒ˜ ์‹œ๋‚˜๋ฆฌ์˜ค (EFS ๊ธฐ๋ฐ˜)

1. ๊ณ ๊ฐ€์šฉ์„ฑ ์›น ์„œ๋ฒ„ ๊ณต์œ  ์ €์žฅ์†Œ

  • ๊ตฌ์„ฑ
    • 2~3๋Œ€ EC2 (๊ฐ๊ธฐ ๋‹ค๋ฅธ AZ)
  • EFS
    • /var/www/html ๋“ฑ์— ๋งˆ์šดํŠธํ•˜์—ฌ ๋™์ผ ์ฝ˜ํ…์ธ  ์ œ๊ณต

๐Ÿ” ๋ณด์•ˆ ์ •์ฑ…

โœ” Security Group

1. EC2 Security Group

  • Inbound
    • SSH (22)
    • HTTP / HTTPS (80 / 443)
  • Outbound
    • 80 / 443 โ†’ 0.0.0.0/0 ํ—ˆ์šฉ โ†’ ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ฐ AWS API ํ†ต์‹  ํ•„์š”

2. EFS Security Group

  • Inbound
    • NFS (2049)
    • Source: EC2 Security Group โ— ์ ˆ๋Œ€ 0.0.0.0/0 ๊ธˆ์ง€
  • Outbound
    • All Traffic ํ—ˆ์šฉ (๊ธฐ๋ณธ๊ฐ’ ์œ ์ง€)

๐Ÿ“Œ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ (User Data)

๐Ÿ”น ์ฝ๊ธฐ ์ „์šฉ EC2

#!/bin/bash
yum update -y
yum install -y amazon-efs-utils

mkdir -p /mnt/efs_readonly

# Read-Only ๋งˆ์šดํŠธ
mount -t efs -o tls,ro <EFS_ID>:/ /mnt/efs_readonly

# ์ž๋™ ๋งˆ์šดํŠธ ์„ค์ •
echo "<EFS_ID>:/ /mnt/efs_readonly efs _netdev,tls,ro 0 0" >> /etc/fstab

๐Ÿ”น ์ฝ๊ธฐ + ์“ฐ๊ธฐ EC2

#!/bin/bash
yum update -y
yum install -y amazon-efs-utils

mkdir -p /mnt/efs_fullaccess

# ๊ธฐ๋ณธ (Read/Write)
mount -t efs -o tls <EFS_ID>:/ /mnt/efs_fullaccess

# ์ž๋™ ๋งˆ์šดํŠธ
echo "<EFS_ID>:/ /mnt/efs_fullaccess efs _netdev,tls 0 0" >> /etc/fstab

# ๊ถŒํ•œ ์„ค์ •
chown ec2-user:ec2-user /mnt/efs_fullaccess
chmod 775 /mnt/efs_fullaccess

๐Ÿ“Œ IAM Policy

๐Ÿ”น ์ฝ๊ธฐ ์ „์šฉ

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["elasticfilesystem:ClientMount"],
      "Resource": "arn:aws:elasticfilesystem:<๋ฆฌ์ „>:<๊ณ„์ •ID>:file-system/<EFS_ID>"
    }
  ]
}

๐Ÿ”น ์ฝ๊ธฐ + ์“ฐ๊ธฐ

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticfilesystem:ClientMount",
        "elasticfilesystem:ClientWrite"
      ],
      "Resource": "arn:aws:elasticfilesystem:<๋ฆฌ์ „>:<๊ณ„์ •ID>:file-system/<EFS_ID>"
    }
  ]
}

๐Ÿ“Œ EFS ํŒŒ์ผ ์‹œ์Šคํ…œ ์ •์ฑ…

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowRWAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<๊ณ„์ •ID>:role/<RW_ROLE_NAME>"
      },
      "Action": [
        "elasticfilesystem:ClientMount",
        "elasticfilesystem:ClientWrite"
      ],
      "Resource": "arn:aws:elasticfilesystem:<๋ฆฌ์ „>:<๊ณ„์ •ID>:file-system/<EFS_ID>",
      "Condition": {
        "Bool": {
          "elasticfilesystem:AccessedViaMountTarget": "true"
        }
      }
    },
    {
      "Sid": "AllowROAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<๊ณ„์ •ID>:role/<RO_ROLE_NAME>"
      },
      "Action": "elasticfilesystem:ClientMount",
      "Resource": "arn:aws:elasticfilesystem:<๋ฆฌ์ „>:<๊ณ„์ •ID>:file-system/<EFS_ID>",
      "Condition": {
        "Bool": {
          "elasticfilesystem:AccessedViaMountTarget": "true"
        }
      }
    }
  ]
}

๐Ÿ“Œ EFS ๋งˆ์šดํŠธ ๋ช…๋ น์–ด ์ •๋ฆฌ

1. ์„ค์น˜ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ

sudo yum install -y amazon-efs-utils
sudo mkdir -p /mnt/efs

2. ๊ธฐ๋ณธ ๋งˆ์šดํŠธ

sudo mount -t efs -o tls,iam fs-00816bdd3d0cbdaec /mnt/efs

3. ๊ถŒํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ

โœ” ๋ฐฉ๋ฒ• A: IAM ์ •์ฑ… ์ˆ˜์ •

{
  "Effect": "Allow",
  "Action": [
    "elasticfilesystem:ClientMount",
    "elasticfilesystem:ClientWrite",
    "elasticfilesystem:ClientRootAccess"
  ],
  "Resource": "arn:aws:elasticfilesystem:๋ฆฌ์ „:781729906178:file-system/fs-00816bdd3d0cbdaec"
}

โœ” ๋ฐฉ๋ฒ• B: Access Point ์‚ฌ์šฉ

# ๊ธฐ์กด ๋งˆ์šดํŠธ ํ•ด์ œ
sudo umount /mnt/efs

# Access Point ํฌํ•จ ๋งˆ์šดํŠธ
sudo mount -t efs -o tls,iam,accesspoint=fsap-xxxxxxxxxxxxxxxxx fs-00816bdd3d0cbdaec /mnt/efs

4. ํ…Œ์ŠคํŠธ

# ํŒŒ์ผ ์ƒ์„ฑ
echo "admin success" | sudo tee /mnt/efs/test.txt

# ํŒŒ์ผ ํ™•์ธ
ls -la /mnt/efs/

โœ… ํ•ต์‹ฌ ์ •๋ฆฌ (์‹œํ—˜ ํฌ์ธํŠธ)

  • IAM์œผ๋กœ EC2๋ณ„ ์ ‘๊ทผ ๊ถŒํ•œ ๋ถ„๋ฆฌ
  • EFS SG๋Š” ๋ฐ˜๋“œ์‹œ EC2 SG๋งŒ ํ—ˆ์šฉ
  • ClientMount vs ClientWrite ์ฐจ์ด ์ดํ•ด
  • ์ฝ๊ธฐ ์ „์šฉ์€ ro ์˜ต์…˜
  • ๊ถŒํ•œ ์˜ค๋ฅ˜ โ†’ ClientRootAccess ๋˜๋Š” Access Point

์›ํ•˜๋ฉด ๐Ÿ‘‰ โ€œ์‹œํ—˜์— ๋‚˜์˜ฌ ํฌ์ธํŠธ๋งŒ 1ํŽ˜์ด์ง€ ์š”์•ฝโ€๋„ ๋งŒ๋“ค์–ด์ค„๊ฒŒ ๐Ÿ‘

0๊ฐœ์˜ ๋Œ“๊ธ€