{"id":2110,"date":"2023-04-06T09:58:38","date_gmt":"2023-04-06T00:58:38","guid":{"rendered":"https:\/\/manvscloud.com\/?p=2110"},"modified":"2023-04-06T19:34:59","modified_gmt":"2023-04-06T10:34:59","slug":"aws-amazon-ses%eb%a1%9c-%eb%a9%94%ec%9d%bc-%ec%88%98%ec%8b%a0-%ed%9b%84-csv-%ed%8c%8c%ec%9d%bc-%ec%b6%94%ec%b6%9c-%eb%b0%8f-s3-%ec%a0%80%ec%9e%a5","status":"publish","type":"post","link":"https:\/\/manvscloud.com\/?p=2110","title":{"rendered":"[AWS] Amazon SES\ub85c \uba54\uc77c \uc218\uc2e0 \ud6c4 csv \ud30c\uc77c \ucd94\ucd9c \ubc0f S3 \uc800\uc7a5"},"content":{"rendered":"\n<p>\uc548\ub155\ud558\uc138\uc694. MANVSCLOUD \uae40\uc218\ud604\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc624\ub79c\ub9cc\uc5d0 Amazon Web Services(AWS) \ud3ec\uc2a4\ud305\uc744 \uc791\uc131\ud558\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ud604\ub300 \uae30\uc5c5\ub4e4\uc740 \ub300\uc6a9\ub7c9\uc758 \ub370\uc774\ud130\ub97c \ub2e4\ub8e8\uae30 \uc704\ud574 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18\uc758 \uc800\uc7a5\uc18c\ub97c \ud65c\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<br>\uc774\ub7ec\ud55c \ud658\uacbd\uc5d0\uc11c \ub370\uc774\ud130\uc758 \uc911\uc694\uc131\uc740 \uc810\uc810 \ucee4\uc9c0\uace0 \uc788\uc73c\uba70, \uc774\ub97c \ud6a8\uacfc\uc801\uc73c\ub85c \uad00\ub9ac\ud558\uace0 \ud65c\uc6a9\ud558\ub294 \uac83\uc774 \uae30\uc5c5\uc758 \uacbd\uc7c1\ub825\uc744 \ub192\uc774\ub294 \ud575\uc2ec \uc694\uc18c\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\ubc88 \ud3ec\uc2a4\ud2b8\uc5d0\uc11c\ub294 Amazon SES\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774\uba54\uc77c\uc744 \ud1b5\ud574 \ubc1b\uc740 \ub370\uc774\ud130 \uc911 CSV \ud30c\uc77c\ub9cc\uc744 \ucd94\ucd9c\ud558\uace0, Amazon S3\uc5d0 \uc800\uc7a5\ud558\ub294 \ubc29\ubc95\uc744 \uc18c\uac1c\ud558\ub824\uace0 \ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \uc800\uc7a5\ub41c CSV \ud30c\uc77c\uc740 \ub370\uc774\ud130 \ubd84\uc11d, \ub9ac\ud3ec\ud305, \uba38\uc2e0\ub7ec\ub2dd \ub4f1 \ub2e4\uc591\ud55c \ubaa9\uc801\uc73c\ub85c \ud65c\uc6a9\ub420 \uc218 \uc788\uc5b4 \uae30\uc5c5\uc758 \uc5c5\ubb34 \ud6a8\uc728\uc131\uc744 \ud06c\uac8c \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Lambda\ubd80\ud130 S3, SES \uc11c\ube44\uc2a4\uae4c\uc9c0 \uc124\uc815\uc744 \ucc28\ub840\ub300\ub85c \uc9c4\ud589\ud574\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"has-white-color has-vivid-red-background-color has-text-color has-background wp-block-heading\"> Get CSV File<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"911\" height=\"351\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24104755\/getcsv.png\" alt=\"\" class=\"wp-image-2111\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24104755\/getcsv.png 911w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24104755\/getcsv-300x116.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24104755\/getcsv-768x296.png 768w\" sizes=\"(max-width: 911px) 100vw, 911px\" \/><\/figure>\n\n\n\n<p>\uba3c\uc800 \uc704 \uadf8\ub9bc\uacfc \ud568\uaed8 Flow\ub97c \uc54c\uc544\ubcf4\uc790.<\/p>\n\n\n\n<ol class=\"has-vivid-cyan-blue-color has-text-color\"><li>Google, Naver \ub4f1 \uba54\uc77c\ub85c Amazon SES\uc5d0 \ub4f1\ub85d\ub41c Email\uc5d0\uac8c CSV \ud30c\uc77c\uc744 \ucca8\ubd80\ud558\uc5ec \ubcf4\ub0c5\ub2c8\ub2e4.<\/li><li>Amazon SES(us-east-1)\uc5d0\uc11c \uba54\uc77c\uc744 \uc218\uc2e0\ud569\ub2c8\ub2e4.<\/li><li>\uba54\uc77c \uc218\uc2e0 \uc2dc \uba54\uc77c\uc744 \ubcf4\uad00\ud560 Mailbox\uac00 \ud544\uc694\ud55c\ub370 \uc774\ub97c Amazon S3\ub85c \uc9c0\uc815\ud569\ub2c8\ub2e4.<\/li><li>Amazon S3\uc5d0 \uba54\uc77c\uc774 \ubcf4\uad00\ub418\uba74 Lambda\uc5d0\uc11c \ubcf4\uad00\ub41c \ud30c\uc77c\uc5d0\uc11c CSV \ud30c\uc77c\ub9cc \ucd94\ucd9c\ud558\uc5ec \ub2e4\uc2dc Amazon S3\ub85c \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/li><li>\uad00\ub9ac\uc790\ub294 Amazon S3\uc5d0 \uc800\uc7a5\ub41c CSV \ud30c\uc77c\uc744 \uc774\uc6a9\ud558\uc5ec \ub2e4\uc591\ud558\uac8c \ud65c\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br> \uc0ac\uc6a9\ud558\uc5ec \uba54\uc77c\uc744 \uc218\uc2e0\ud558\uace0, \uc774\uba54\uc77c \ub370\uc774\ud130\ub97c S3\uc5d0 \uc800\uc7a5\ud558\ub294 \ubc29\ubc95\uc744 \uc124\uba85\ud569\ub2c8\ub2e4.<\/li><\/ol>\n\n\n\n<p>\uc704 \uc124\uc815\uc740 \ub9e4\uc6b0 \uac04\ub2e8\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub2e4\ub9cc \uc218\uc2e0\ub41c \uc774\uba54\uc77c\uc758 \ub370\uc774\ud130\ub294 \uadf8 \uc790\uccb4\ub85c \ub9ce\uc740 \uc815\ubcf4\ub97c \uc81c\uacf5\ud558\uae30\ub54c\ubb38\uc5d0 \ud574\ub2f9 \ud3ec\uc2a4\ud305\uc744 \ud1b5\ud574 \ud574\ub2f9 \ud30c\uc77c\uc5d0\ub294 \uc5b4\ub5a4 \uc815\ubcf4\uac00 \ub2f4\uaca8\uc788\uace0 \uc65c \ub0b4\uc6a9\uc774 \uc778\ucf54\ub529\ub418\uc5b4 \uc788\ub294\uc9c0, \uba54\uc77c\uc774 \uc5b4\ub5bb\uac8c \uc804\uc1a1\ub418\ub294\uc9c0 \uace0\ubbfc\ud574\ubcf4\ub294 \uc2dc\uac04\ub3c4 \ud568\uaed8\ud558\uae38 \ubc14\ub78d\ub2c8\ub2e4. <\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"has-white-color has-luminous-vivid-amber-background-color has-text-color has-background wp-block-heading\"> Lambda<\/h3>\n\n\n\n<p>\uba3c\uc800 Lambda \ud568\uc218\ub97c \uc0dd\uc131\uc744 \ud560\ud150\ub370 \ubbf8\uad6d \ub3d9\ubd80(\ubc84\uc9c0\ub2c8\uc544 \ubd81\ubd80) <a href=\"https:\/\/us-east-1.console.aws.amazon.com\/lambda\/home?region=us-east-1#\/functions\">us-east-1<\/a> \ub9ac\uc804\uc5d0\uc11c \uc0dd\uc131\ud574\uc904 \uac83\uc785\ub2c8\ub2e4.  \uadf8 \uc774\uc720\ub294 \uc544\ub798 Amazon SES \uc0dd\uc131 \uc2dc \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub7f0\ud0c0\uc784\uc740 Python 3.9 \ubc84\uc804\uc73c\ub85c \uc0dd\uc131\ud558\uba70 IAM Role\uc740 \uae30\ubcf8 Lambda \uc5ed\ud560\uc5d0 S3 \uc77d\uae30 \ubc0f \uc4f0\uae30 \uad8c\ud55c\uc744 \ucd94\uac00\ud574\uc8fc\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc544\ub798\ub294 <strong>lambda_function.py <\/strong>\uc758 \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import boto3\nimport base64\nimport csv\nfrom datetime import datetime\nfrom io import BytesIO\nimport pytz\n\n\ndef get_latest_s3_file(bucket_name, prefix, exclude_name):\n    s3 = boto3.client('s3')\n    objects = s3.list_objects_v2(Bucket=bucket_name, Prefix=prefix)['Contents']\n\n    # \ud544\ud130\ub9c1\ub41c \uac1d\uccb4 \ubaa9\ub85d \uc0dd\uc131 (exclude_name \uc81c\uc678)\n    filtered_objects = [obj for obj in objects if exclude_name not in obj['Key']]\n\n    # \uac00\uc7a5 \ucd5c\uadfc\uc758 \uc218\uc815\ub41c \ud30c\uc77c \ucc3e\uae30\n    latest = max(filtered_objects, key=lambda x: x['LastModified'])\n    return latest['Key']\n\n\ndef get_lines_after_keyword(file_content, keyword, remove_words):\n    lines = file_content.split('\\n')\n\n    result = \"\"\n    found_keyword = False\n    for line in lines:\n        if keyword in line:\n            found_keyword = True\n\n        if found_keyword:\n            # \ubaa8\ub4e0 \uc81c\uac70 \ub300\uc0c1 \ubb38\uc790\uc5f4\uc774 \uc5c6\ub294\uc9c0 \ud655\uc778\n            should_print = all(remove_word not in line for remove_word in remove_words)\n\n            # \uc904\uc758 \uc55e\ub4a4 \uacf5\ubc31\uc744 \uc81c\uac70\ud55c \ud6c4, \uc904\uc774 \ube44\uc5b4\uc788\uc9c0 \uc54a\uc740\uc9c0 \ud655\uc778\n            if should_print and line.strip():\n                result += line + '\\n'\n\n    return result\n\ndef lambda_handler(event, context):\n    bucket_name = \"\ubc84\ud0b7\uba85\"\n    prefix = \"\uba54\uc77c\uc800\uc7a5\uacbd\ub85c\/\"\n    exclude_name = \"AMAZON_SES_SETUP_NOTIFICATION\"\n\n    # \uac00\uc7a5 \ucd5c\uadfc \ub0a0\uc9dc\uc758 \ud30c\uc77c \ucc3e\uae30\n    latest_file_key = get_latest_s3_file(bucket_name, prefix, exclude_name)\n\n    # S3\uc5d0\uc11c \ucd5c\uc2e0 \ud30c\uc77c \ub2e4\uc6b4\ub85c\ub4dc\n    s3 = boto3.client('s3')\n    s3_object = s3.get_object(Bucket=bucket_name, Key=latest_file_key)\n    file_content = s3_object['Body'].read().decode('utf-8')\n\n    keyword = \"text\/csv\"\n    remove_words = [\"Boundary-WM\", \"Content-Type\", \"Content-Disposition\", \"Content-Transfer-Encoding\", \"name=\", \"filename=\"]\n\n    encoded_data = get_lines_after_keyword(file_content, keyword, remove_words)\n\n    # base64 \uc778\ucf54\ub529 \ud574\ub3c5 \ubc0f S3 \uc5c5\ub85c\ub4dc\n    if encoded_data:\n        decoded_data = base64.b64decode(encoded_data)\n\n        # \uacb0\uacfc\ub97c .csv \ud30c\uc77c\ub85c \uc800\uc7a5\n        current_time = datetime.now(pytz.timezone('Asia\/Seoul'))\n        formatted_time = current_time.strftime('%Y%m%d%H%M%S')\n        output_filename = f\"Data-{formatted_time}\"\n\n        # \uacb0\uacfc\ub97c S3\uc5d0 \uc5c5\ub85c\ub4dc\n        output_key = f\"CSV\uc800\uc7a5\uacbd\ub85c\/{output_filename}.csv\"\n        s3.upload_fileobj(BytesIO(decoded_data), bucket_name, output_key)\n\n        return {\n            'statusCode': 200,\n            'body': f'Successfully processed and saved as {output_key}'\n        }\n    else:\n        return {\n            'statusCode': 200,\n            'body': f'Successfully processed but no \"{keyword}\" found in the file'\n        }\n<\/pre>\n\n\n\n<p>&#8220;\uc704 \ucf54\ub4dc\uc5d0\uc11c &#8220;\ubc84\ud0b7\uba85&#8221;, &#8220;\uba54\uc77c\uc800\uc7a5\uacbd\ub85c&#8221;, &#8220;CSV\uc800\uc7a5\uacbd\ub85c&#8221; \ubd80\ubd84\uc740 \uac1c\uc778 \ud658\uacbd\uc5d0 \ub9de\uac8c \uc218\uc815\ud558\uc5ec \uc0ac\uc6a9\ud558\uc790&#8221;<\/p>\n\n\n\n<p>\ub610\ud55c L<strong>ambda\uc5d0\uc11c\ub294 pytz \ubaa8\ub4c8\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uc704 \ucf54\ub4dc\ub97c Lambda\ub85c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c\ub294 \uc11c\ubc84\uc5d0\uc11c pytz \ubaa8\ub4c8\uc744 \uc124\uce58\ud55c \ud6c4 \uc555\ucd95\ud558\uc5ec .zip \ud30c\uc77c\uc744 Lambda \ucf54\ub4dc \uc18c\uc2a4\uc5d0 \uc5c5\ub85c\ub4dc<\/strong>\ud574\uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \ucc38\uace0\npip install pytz -t .\nzip -r getCSV.zip .<\/pre>\n\n\n\n<p>\uba54\uc77c \ud14c\uc2a4\ud2b8 \ud6c4 \uacb0\uacfc\uc5d0\uc11c \uc54c \uc218 \uc788\uaca0\uc9c0\ub9cc Lambda \ud568\uc218\uac00 \ub3d9\uc791 \uc2dc S3\uc5d0 \uc800\uc7a5\ub420 \ucd94\ucd9c\ub41c CSV \ud30c\uc77c\uc740 S3\uc5d0 Data-20230405093030.csv \uc640 \uac19\uc740 \ud615\ud0dc\ub85c \uc800\uc7a5\ub429\ub2c8\ub2e4. <br>(Data-\ub144\uc6d4\uc77c\uc2dc\ubd84\ucd08)<\/p>\n\n\n\n<p>\ucd94\uac00\ub85c Lambda &#8211; \uad6c\uc131 &#8211; \uc77c\ubc18 \uad6c\uc131\uc5d0\uc11c \uc81c\ud55c \uc2dc\uac04\uc744 10\ucd08\ub85c \uc124\uc815\ud588\uc2b5\ub2c8\ub2e4.<br>\ud574\ub2f9 \ucf54\ub4dc \ub3d9\uc791 \uc2dc 6~7\ucd08\uc758 \uc18c\uc694 \uc2dc\uac04\uc774 \ubc1c\uc0dd\ud588\uae30 \ub54c\ubb38\uc5d0 6~7\ucd08\ubcf4\ub2e4 \ub0ae\uc740 \uac12\uc77c \uacbd\uc6b0 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"has-white-color has-vivid-cyan-blue-background-color has-text-color has-background wp-block-heading\"> Amazon SES &amp; S3<\/h3>\n\n\n\n<h4 class=\"has-black-color has-text-color wp-block-heading\">\ud83d\udccc S3 \ubc84\ud0b7 \uc0dd\uc131<\/h4>\n\n\n\n<p>\uba3c\uc800 S3 \ubc84\ud0b7\uc744 \uc0dd\uc131\ud574\uc8fc\uace0 SES\uac00 S3\uc5d0 Object\ub97c Put\ud560 \uc218 \uc788\ub3c4\ub85d \uc0dd\uc131\ub41c S3\ubc84\ud0b7\uc758 \ubc84\ud0b7 \uc815\ucc45\uc744 \uc218\uc815\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ubc29\ubc95\uc740 \uc544\ub798 \ud06c\uac8c \ub450 \uac00\uc9c0 \uc911\uc5d0 \ud558\ub098\ub97c \uc120\ud0dd\ud558\uc5ec \uc0ac\uc6a9\ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"AllowSESPuts\",\n            \"Effect\": \"Allow\",\n            \"Principal\": {\n                \"Service\": \"ses.amazonaws.com\"\n            },\n            \"Action\": \"s3:PutObject\",\n            \"Resource\": \"arn:aws:s3:::\ubc84\ud0b7\uba85\/*\",\n            \"Condition\": {\n                \"StringEquals\": {\n                    \"aws:Referer\": \"\uacc4\uc815ID\"\n                }\n            }\n        }\n    ]\n}<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n  \"Version\":\"2012-10-17\",\n  \"Statement\":[\n    {\n      \"Sid\":\"AllowSESPuts\",\n      \"Effect\":\"Allow\",\n      \"Principal\":{\n        \"Service\":\"ses.amazonaws.com\"\n      },\n      \"Action\":\"s3:PutObject\",\n      \"Resource\":\"arn:aws:s3:::\ubc84\ud0b7\uba85\/*\",\n      \"Condition\":{\n        \"StringEquals\":{\n          \"AWS:SourceAccount\":\"\uacc4\uc815ID\",\n          \"AWS:SourceArn\": \"arn:aws:ses:\ub9ac\uc804:\uacc4\uc815ID:receipt-rule-set\/\uaddc\uce59\uc138\ud2b8\uc774\ub984:receipt-rule\/\uc218\uc2e0\uaddc\uce59\uc774\ub984\"\n        }\n      }\n    }\n  ]\n}<\/pre>\n\n\n\n<p>\ucd94\uac00\ub85c S3 \ubc84\ud0b7 \ub0b4\uc5d0 \ud3f4\ub354 \ub450 \uac1c\ub97c \uc0dd\uc131\ud588\uc2b5\ub2c8\ub2e4.<br>&#8221; \uba54\uc77c\uc744 \uc218\uc2e0\ud560 recv \uc774\ub984\uc744 \uac00\uc9c4 \ud3f4\ub354 \ud558\ub098\uc640 CSV\ud30c\uc77c\uc744 \uc800\uc7a5\ud560 csv \uc774\ub984\uc758 \ud3f4\ub354 \uc0dd\uc131 &#8220;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\ud83d\udccc Amazon SES<\/h4>\n\n\n\n<p>Amazon SES\ub294 \uc218\uc2e0\uc774 \uac00\ub2a5\ud55c \ub9ac\uc804\uc5d0\uc11c \uc0dd\uc131\ud574\uc8fc\uc5b4\uc57c\ud569\ub2c8\ub2e4.<br>\ubc1c\uc2e0\uc758 \uacbd\uc6b0 \ub300\ubd80\ubd84\uc758 \ub9ac\uc804\uc5d0\uc11c \uac00\ub2a5\ud558\uc9c0\ub9cc \uc218\uc2e0\uc774 \uac00\ub2a5\ud55c \ub9ac\uc804\uc740 \uc544\ub798 \uc138 \uac00\uc9c0\ub85c \ud55c\uc815\ub418\uc5b4\uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul><li><strong>\ubbf8\uad6d \ub3d9\ubd80 (\ubc84\uc9c0\ub2c8\uc544 \ubd81\ubd80) us-east-1<\/strong><\/li><li><strong>\ubbf8\uad6d \uc11c\ubd80 (\uc624\ub808\uace4) us-west-2<\/strong><\/li><li><strong>\uc720\ub7fd (\uc544\uc77c\ub79c\ub4dc) eu-west-1<\/strong><\/li><\/ul>\n\n\n\n<p>Amazon SES &#8211; \uad6c\uc131 &#8211; \uc774\uba54\uc77c \uc218\uc2e0\uc5d0\uc11c \uc218\uc2e0 \uaddc\uce59 \uc138\ud2b8\ub97c \uc124\uc815\ud574\uc8fc\uc5b4\uc57c\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"426\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110334\/ses-01-1024x426.png\" alt=\"\" class=\"wp-image-2112\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110334\/ses-01-1024x426.png 1024w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110334\/ses-01-300x125.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110334\/ses-01-768x320.png 768w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110334\/ses-01-1536x639.png 1536w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110334\/ses-01-1080x449.png 1080w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110334\/ses-01.png 1567w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"has-vivid-red-color has-text-color wp-block-heading\"><strong>\ud83d\udc47\ud83c\udffb \uaddc\uce59 \uc124\uc815 \uc608\uc2dc<\/strong><\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"827\" height=\"689\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110347\/ses-02.png\" alt=\"\" class=\"wp-image-2113\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110347\/ses-02.png 827w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110347\/ses-02-300x250.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110347\/ses-02-768x640.png 768w\" sizes=\"(max-width: 827px) 100vw, 827px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"842\" height=\"600\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110356\/ses-03.png\" alt=\"\" class=\"wp-image-2114\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110356\/ses-03.png 842w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110356\/ses-03-300x214.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110356\/ses-03-768x547.png 768w\" sizes=\"(max-width: 842px) 100vw, 842px\" \/><\/figure>\n\n\n\n<p>\uc704 \uc124\uc815\uae4c\uc9c0\ub294 \ud06c\uac8c \uc5b4\ub824\uc6b4 \ubd80\ubd84\uc740 \uc5c6\uc73c\ub098 \uc544\ub798 \uc124\uc815\ubd80\ud130\ub294 \ub2e4\uc591\ud55c \uc120\ud0dd\uc9c0\uac00 \uc0dd\uae41\ub2c8\ub2e4.<\/p>\n\n\n\n<p>&#8216;\uc791\uc5c5 \ucd94\uac00&#8217; \uc124\uc815\uc744 \ud1b5\ud574 Amazon SES\uac00 \uc218\ud589\ud558\ub294 \uc791\uc5c5\uc758 \uc21c\uc11c\ub97c \uc120\ud0dd\ud560 \uc218 \uc788\ub294\ub370 \ud5e4\ub354\ub97c \ucd94\uac00\ud558\uac70\ub098 Amazon Workmail\uacfc \uc5f0\ub3d9\ud558\uac70\ub098 Lambda \ud568\uc218 \ud638\ucd9c \ub4f1 \ub2e4\uc591\ud55c \uc791\uc5c5\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"819\" height=\"477\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110406\/ses-04.png\" alt=\"\" class=\"wp-image-2115\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110406\/ses-04.png 819w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110406\/ses-04-300x175.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110406\/ses-04-768x447.png 768w\" sizes=\"(max-width: 819px) 100vw, 819px\" \/><\/figure>\n\n\n\n<p>\uba3c\uc800 [Amazon S3 \ubc84\ud0b7\uc73c\ub85c \uc804\uc1a1]\uc744 \uccab\ubc88\uc9f8 \uc791\uc5c5\uc73c\ub85c \uc120\ud0dd\ud574\uc8fc\uace0 \uc704\uc5d0\uc11c \uc0dd\uc131\ud55c S3 \ubc84\ud0b7 \uc120\ud0dd \ubc0f \uac1d\uccb4 \ud0a4 \uc811\ub450\uc0ac\uc5d0\uc11c\ub294 \uc774\uba54\uc77c\uc744 \uc218\uc2e0\ud560 \uacbd\ub85c\ub97c \uc785\ub825\ud574\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ud574\ub2f9 \ud3ec\uc2a4\ud305 \uacfc\uc815\uc5d0\uc11c \uc774 \ubd80\ubd84\uc744 \ub193\uce58\ub294 \uacbd\uc6b0 \uba54\uc77c \ud14c\uc2a4\ud2b8 \uc2dc &#8220;550 5.5.0 mailbox unavailable&#8221; \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <br>(\uc218\uc2e0 \uc2dc \uba54\uc77c\uc744 \ubcf4\uad00\ud560 Mailbox\ub97c \uc9c0\uc815\ud574\uc8fc\uc9c0 \uc54a\uc558\uae30 \ub54c\ubb38)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"799\" height=\"431\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110414\/ses-05.png\" alt=\"\" class=\"wp-image-2116\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110414\/ses-05.png 799w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110414\/ses-05-300x162.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/03\/24110414\/ses-05-768x414.png 768w\" sizes=\"(max-width: 799px) 100vw, 799px\" \/><\/figure>\n\n\n\n<p>\ub450\ubc88\uc9f8 \uc791\uc5c5\uc73c\ub85c [AWS Lambda \ud568\uc218 \ud638\ucd9c]\uc744 \uc120\ud0dd \ud6c4 \uc704\uc5d0\uc11c \uc0dd\uc131\ud574\uc900 Lambda \ud568\uc218\uac00 \ud638\ucd9c\ub418\ub3c4\ub85d \uc124\uc815\ud574\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Amazon SES \uc124\uc815\uc774 \uc644\ub8cc\ub418\uc5c8\ub2e4\uba74 \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc704 \uc218\uc2e0\uc790 \uc124\uc815\uc5d0 \uc0ac\uc6a9\ub41c \ub3c4\uba54\uc778\uc758 \ub124\uc784\uc11c\ubc84\uc5d0\uc11c MX \ub808\ucf54\ub4dc\ub97c \ub4f1\ub85d\ud558\uc5ec \uba54\uc77c \uc11c\ubc84\ub97c \ub4f1\ub85d\ud574\uc8fc\uc5b4\uc57c\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"has-vivid-red-color has-text-color\">10 inbound-smtp.<em>REGION<\/em>.amazonaws.com<\/p>\n\n\n<div class=\"vlp-link-container vlp-layout-basic wp-block-visual-link-preview-link\"><a href=\"https:\/\/docs.aws.amazon.com\/ko_kr\/ses\/latest\/dg\/receiving-email-mx-record.html\" class=\"vlp-link\" title=\"Amazon SES \uc774\uba54\uc77c \uc218\uc2e0\uc744 \uc704\ud574 MX \ub808\ucf54\ub4dc \uac8c\uc2dc\ud558\uae30 - Amazon Simple Email Service\" rel=\"nofollow\" target=\"_blank\"><\/a><div class=\"vlp-layout-zone-side\"><div class=\"vlp-block-2 vlp-link-image\"><img decoding=\"async\" src=\"https:\/\/docs.aws.amazon.com\/assets\/r\/images\/aws_logo_dark.png\" style=\"max-width: 150px; max-height: 150px\" \/><\/div><\/div><div class=\"vlp-layout-zone-main\"><div class=\"vlp-block-0 vlp-link-title\">Amazon SES \uc774\uba54\uc77c \uc218\uc2e0\uc744 \uc704\ud574 MX \ub808\ucf54\ub4dc \uac8c\uc2dc\ud558\uae30 &#8211; Amazon Simple Email Service<\/div><div class=\"vlp-block-1 vlp-link-summary\">Amazon SES\uac00 \uc0ac\uc6a9\uc790 \ub3c4\uba54\uc778\uc5d0\uc11c \uc804\uc1a1\ub41c \uc774\uba54\uc77c\uc744 \uc218\uc2e0\ud558\ub3c4\ub85d \ud558\ub294 \ub3c4\uba54\uc778\uc758 DNS \uad6c\uc131\uc5d0 DNS \ub808\ucf54\ub4dc\ub97c \ucd94\uac00\ud558\ub294 \uc791\uc5c5\uc5d0 \ub300\ud55c \uc815\ubcf4\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/div><\/div><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"has-white-color has-vivid-green-cyan-background-color has-text-color has-background wp-block-heading\"> Result<\/h3>\n\n\n\n<p>\uc774\uc81c \uba54\uc77c \ud14c\uc2a4\ud2b8\ub97c \uc9c4\ud589\ud560 \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"601\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/06095445\/sendmail-1024x601.png\" alt=\"\" class=\"wp-image-2136\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/06095445\/sendmail-1024x601.png 1024w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/06095445\/sendmail-300x176.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/06095445\/sendmail-768x451.png 768w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/06095445\/sendmail-1080x634.png 1080w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/06095445\/sendmail.png 1345w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\uac1c\uc778 \uba54\uc77c\uc5d0\uc11c CSV \ud30c\uc77c\uc744 \ucca8\ubd80\ud558\uc5ec \uc704 \uc218\uc2e0\uc790\ub85c \ub4f1\ub85d\ud55c \uc774\uba54\uc77c\ub85c \uba54\uc77c\uc744 \ubc1c\uc1a1\ud558\uace0 \uc815\uc0c1\uc801\uc73c\ub85c \ubc1c\uc1a1\uc774 \ub418\uc5c8\ub2e4\uba74 S3 \ubc84\ud0b7\uc744 \ud655\uc778\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>&lt;\uc774\uba54\uc77c\uc774 \uc800\uc7a5\ub418\ub294 \uacbd\ub85c&gt;<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"429\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/05160619\/RECV-1024x429.png\" alt=\"\" class=\"wp-image-2133\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/05160619\/RECV-1024x429.png 1024w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/05160619\/RECV-300x126.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/05160619\/RECV-768x322.png 768w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/05160619\/RECV-1080x453.png 1080w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/05160619\/RECV.png 1475w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"has-vivid-red-color has-text-color wp-block-heading\"><strong>\ud83d\udc47\ud83c\udffb \uc218\uc2e0\ub41c \ud30c\uc77c \ub0b4\uc6a9 \uc608\uc2dc <\/strong><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Return-Path: \nReceived: \nX-SES-Spam-Verdict: \nX-SES-Virus-Verdict: \nReceived-SPF: \nAuthentication-Results: \nX-SES-RECEIPT: \nX-Originating-IP: \nX-Works-Smtp-Source: \nReceived: \nDKIM-Signature: \nX-Session-ID: \nMessage-ID: \nDate: \nFrom: \nImportance: \nTo: \nSubject: \uc81c\ubaa9\nX-Originating-IP: \nX-Works-Send-Opt: \nContent-Type: multipart\/mixed;\n        boundary=\"-----Boundary-WM=\"\n\n-------Boundary-WM=\nContent-Type: multipart\/alternative;\n        boundary=\"-----Boundary-WM=\"\n\n-------Boundary-WM=\nContent-Type: text\/plain;\n        charset=\"utf-8\"\n\n-------Boundary-WM=\nContent-Type: text\/html;\n        charset=\"utf-8\"\nContent-Transfer-Encoding: base64\n\n\ub0b4\uc6a9\n\n-------Boundary-WM=\n\n-------Boundary-WM=\nContent-Type: text\/csv;\n        name=\"=?utf-8?B?\"\nContent-Disposition: attachment;\n        filename=\"=?utf-8?B?\"\nContent-Transfer-Encoding: base64\n\n\ucca8\ubd80\ud30c\uc77c\n\n\n-------Boundary-WM=\n\n<\/pre>\n\n\n\n<p>\uc704 \ud30c\uc77c\uc774 S3 \ubc84\ud0b7\uc5d0 \uc800\uc7a5\ub418\uba74 Lambda\ub294 \ud574\ub2f9 \ud30c\uc77c\uc5d0\uc11c Content-Type\uc774 text\/csv\uc778 \ub370\uc774\ud130\ub9cc \ucd94\ucd9c\ud558\uc5ec .csv \ud30c\uc77c\ub85c \ub9cc\ub4e4\uc5b4 S3 \ubc84\ud0b7\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>&lt;CSV \ud30c\uc77c\uc774 \uc800\uc7a5\ub418\ub294 \uacbd\ub85c&gt;<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"291\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/05160628\/CSV-1024x291.png\" alt=\"\" class=\"wp-image-2134\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/05160628\/CSV-1024x291.png 1024w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/05160628\/CSV-300x85.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/05160628\/CSV-768x219.png 768w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/05160628\/CSV-1080x307.png 1080w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2023\/04\/05160628\/CSV.png 1472w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\ud574\ub2f9 .csv \ud30c\uc77c\uc744 \ub2e4\uc6b4\ub85c\ub4dc\ud558\uc5ec \ud30c\uc77c\uc744 \uc5f4\uc5b4\ubcf4\uba74 \ubc1c\uc2e0\ud588\ub358 .csv \ud30c\uc77c\uacfc \ub3d9\uc77c\ud55c \uac83\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"has-white-color has-cyan-bluish-gray-background-color has-text-color has-background wp-block-heading\"> Personal Comments<\/h3>\n\n\n\n<p>\ud574\ub2f9 \ud3ec\uc2a4\ud305\uc744 \ub9c8\ubb34\ub9ac \ud558\uae30 \uc804 \uc704 \uacfc\uc815\uc744 \ub530\ub77c\uc628 \ub3c5\uc790\ub4e4\uc774 \uc218\uc2e0\ub41c \ud30c\uc77c\uc744 \ub2e4\uc6b4\ub85c\ub4dc \ubc1b\uc544 \uba54\uc77c \ub0b4\uc6a9\uc744 \ud655\uc778\ud588\uae38 \ubc14\ub77c\uba70 TMI\ub97c \ub354 \ub044\uc801\uc5ec\ubcf4\ub824\uace0 \ud569\ub2c8\ub2e4. \uc800\uc7a5\ub41c \uba54\uc77c\uc740 MIME \ud3ec\ub9f7 \ud615\uc2dd\uc758 \ud30c\uc77c\uc774\uba70 \ud574\ub2f9 \ud30c\uc77c\uc744 \uc5f4\uc5b4\ubcf4\uba74 \uba54\uc77c\uc758 \ub0b4\uc6a9\uc774 \ubb34\uc5c7\uc778\uc9c0 \ucca8\ubd80\ub41c \ud30c\uc77c\uc758 \ub0b4\uc6a9\uc774 \ubb34\uc5c7\uc778\uc9c0 \uc54c \uc218 \uc5c6\uc5c8\uc744 \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>base64\ub85c \uc778\ucf54\ub529\ub418\uc5c8\ub2e4\ub294 \uc0ac\uc2e4\uc740 Content-Transfer-Encoding: base64 \uc744 \ubcf4\uba74 base 64\ub85c \uc778\ucf54\ub529\ub418\uc5c8\ub2e4\ub294 \uc0ac\uc2e4\uc744 \uc54c \uc218 \uc788\ub294\ub370 \uc774\uba54\uc77c \uc2dc\uc2a4\ud15c\uc5d0\uc11c 7\ube44\ud2b8 ASCII \ubb38\uc790\uc5f4\ub9cc\uc744 \uc9c0\uc6d0\ud558\ub358 \uc2dc\uc808\uc5d0 8\ube44\ud2b8 \ubc14\uc774\ub108\ub9ac \ub370\uc774\ud130\ub97c \uc548\uc804\ud558\uac8c \uc804\uc1a1\ud560 \ud544\uc694\uc131\uc774 \uc0dd\uacbc\uace0 \uc774\ub97c \uc704\ud574 Base64 \uc778\ucf54\ub529\uc774 \ub3c4\uc785\ub418\uc5b4 \uc774\uba54\uc77c\uc5d0 \ucca8\ubd80\ub41c \ud30c\uc77c, \uc774\ubbf8\uc9c0, \ubb38\uc11c \ub4f1\uc758 \ubc14\uc774\ub108\ub9ac \ub370\uc774\ud130\ub97c \uc548\uc804\ud558\uac8c \uc804\uc1a1\ud560 \uc218 \uc788\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc989 base64 \uc778\ucf54\ub529\uc744 \ud1b5\ud574 \ubc14\uc774\ub108\ub9ac \ub370\uc774\ud130\ub97c 6\ube44\ud2b8 \ub2e8\uc704\ub85c \ub098\ub204\uace0 \uac01 6\ube44\ud2b8 \ube14\ub85d\uc5d0 \ub300\ud574 \ud574\ub2f9\ud558\ub294 ASCII \ubb38\uc790\ub97c \ucc3e\uc544 \ub9e4\ud551\ud558\uac8c \ub418\ub294 \uac83\uc785\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\ub9c8\ubb34\ub9ac\ub97c \uc8fc\uc81c\uc640 \uad00\ub828\uc5c6\ub294 TMI\ub85c \ub05d\ub0b4\uac8c \ub418\uc5c8\ub294\ub370 \uac1c\uc778\uc801\uc73c\ub85c \uc8fc\ub2c8\uc5b4 \ub3c5\uc790\ubd84\ub4e4\uc774 Python \ucf54\ub4dc\ub9cc \ubcf5\uc0ac\ud558\uc5ec \ubd99\uc5ec\ub123\uc9c0 \uc54a\uace0 \uc774\ub7ec\ud55c \ubd80\ubd84\ub4e4\ub3c4 \ub193\uce58\uc9c0 \uc54a\uae38 \ubc14\ub77c\uba70 \uc791\uc131\ud558\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uae34 \uae00 \uc77d\uc5b4\uc8fc\uc154\uc11c \uac10\uc0ac\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"773\" height=\"133\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/12213914\/Ncloud_Master_logo-1.png\" alt=\"\" class=\"wp-image-1234\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/12213914\/Ncloud_Master_logo-1.png 773w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/12213914\/Ncloud_Master_logo-1-300x52.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/12213914\/Ncloud_Master_logo-1-768x132.png 768w\" sizes=\"(max-width: 773px) 100vw, 773px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\uc548\ub155\ud558\uc138\uc694. MANVSCLOUD \uae40\uc218\ud604\uc785\ub2c8\ub2e4. \uc624\ub79c\ub9cc\uc5d0 Amazon Web Services(AWS) \ud3ec\uc2a4\ud305\uc744 \uc791\uc131\ud558\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud604\ub300 \uae30\uc5c5\ub4e4\uc740 \ub300\uc6a9\ub7c9\uc758 \ub370\uc774\ud130\ub97c \ub2e4\ub8e8\uae30 \uc704\ud574 \ud074\ub77c\uc6b0\ub4dc \uae30\ubc18\uc758 \uc800\uc7a5\uc18c\ub97c \ud65c\uc6a9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.\uc774\ub7ec\ud55c \ud658\uacbd\uc5d0\uc11c \ub370\uc774\ud130\uc758 \uc911\uc694\uc131\uc740 \uc810\uc810 \ucee4\uc9c0\uace0 \uc788\uc73c\uba70, \uc774\ub97c \ud6a8\uacfc\uc801\uc73c\ub85c \uad00\ub9ac\ud558\uace0 \ud65c\uc6a9\ud558\ub294 \uac83\uc774 \uae30\uc5c5\uc758 \uacbd\uc7c1\ub825\uc744 \ub192\uc774\ub294 \ud575\uc2ec \uc694\uc18c\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\ubc88 \ud3ec\uc2a4\ud2b8\uc5d0\uc11c\ub294 Amazon SES\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774\uba54\uc77c\uc744 \ud1b5\ud574 \ubc1b\uc740 \ub370\uc774\ud130 \uc911 CSV \ud30c\uc77c\ub9cc\uc744 \ucd94\ucd9c\ud558\uace0, Amazon S3\uc5d0 \uc800\uc7a5\ud558\ub294 \ubc29\ubc95\uc744 \uc18c\uac1c\ud558\ub824\uace0 \ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \uc800\uc7a5\ub41c CSV \ud30c\uc77c\uc740 \ub370\uc774\ud130 \ubd84\uc11d, \ub9ac\ud3ec\ud305, \uba38\uc2e0\ub7ec\ub2dd \ub4f1 \ub2e4\uc591\ud55c \ubaa9\uc801\uc73c\ub85c \ud65c\uc6a9\ub420 \uc218 \uc788\uc5b4 \uae30\uc5c5\uc758 \uc5c5\ubb34 \ud6a8\uc728\uc131\uc744 \ud06c\uac8c \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. Lambda\ubd80\ud130 S3, SES \uc11c\ube44\uc2a4\uae4c\uc9c0 \uc124\uc815\uc744 \ucc28\ub840\ub300\ub85c \uc9c4\ud589\ud574\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. Get CSV File \uba3c\uc800 \uc704 \uadf8\ub9bc\uacfc \ud568\uaed8 Flow\ub97c \uc54c\uc544\ubcf4\uc790. Google, Naver \ub4f1 \uba54\uc77c\ub85c Amazon SES\uc5d0 \ub4f1\ub85d\ub41c Email\uc5d0\uac8c CSV \ud30c\uc77c\uc744 \ucca8\ubd80\ud558\uc5ec \ubcf4\ub0c5\ub2c8\ub2e4. Amazon SES(us-east-1)\uc5d0\uc11c \uba54\uc77c\uc744 \uc218\uc2e0\ud569\ub2c8\ub2e4. \uba54\uc77c \uc218\uc2e0 \uc2dc \uba54\uc77c\uc744 \ubcf4\uad00\ud560 Mailbox\uac00 \ud544\uc694\ud55c\ub370 \uc774\ub97c Amazon S3\ub85c \uc9c0\uc815\ud569\ub2c8\ub2e4. Amazon S3\uc5d0 \uba54\uc77c\uc774 \ubcf4\uad00\ub418\uba74 Lambda\uc5d0\uc11c \ubcf4\uad00\ub41c \ud30c\uc77c\uc5d0\uc11c CSV \ud30c\uc77c\ub9cc \ucd94\ucd9c\ud558\uc5ec \ub2e4\uc2dc Amazon S3\ub85c \uc800\uc7a5\ud569\ub2c8\ub2e4. \uad00\ub9ac\uc790\ub294 Amazon S3\uc5d0 \uc800\uc7a5\ub41c CSV \ud30c\uc77c\uc744 \uc774\uc6a9\ud558\uc5ec \ub2e4\uc591\ud558\uac8c \ud65c\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc0ac\uc6a9\ud558\uc5ec \uba54\uc77c\uc744 \uc218\uc2e0\ud558\uace0, \uc774\uba54\uc77c \ub370\uc774\ud130\ub97c S3\uc5d0 \uc800\uc7a5\ud558\ub294 \ubc29\ubc95\uc744 \uc124\uba85\ud569\ub2c8\ub2e4. \uc704 \uc124\uc815\uc740 \ub9e4\uc6b0 \uac04\ub2e8\ud569\ub2c8\ub2e4. \ub2e4\ub9cc \uc218\uc2e0\ub41c \uc774\uba54\uc77c\uc758 \ub370\uc774\ud130\ub294 \uadf8 \uc790\uccb4\ub85c \ub9ce\uc740 \uc815\ubcf4\ub97c \uc81c\uacf5\ud558\uae30\ub54c\ubb38\uc5d0 \ud574\ub2f9 \ud3ec\uc2a4\ud305\uc744 \ud1b5\ud574 \ud574\ub2f9 \ud30c\uc77c\uc5d0\ub294 \uc5b4\ub5a4 \uc815\ubcf4\uac00 \ub2f4\uaca8\uc788\uace0 \uc65c \ub0b4\uc6a9\uc774 \uc778\ucf54\ub529\ub418\uc5b4 \uc788\ub294\uc9c0, \uba54\uc77c\uc774 \uc5b4\ub5bb\uac8c \uc804\uc1a1\ub418\ub294\uc9c0 \uace0\ubbfc\ud574\ubcf4\ub294 \uc2dc\uac04\ub3c4 \ud568\uaed8\ud558\uae38 \ubc14\ub78d\ub2c8\ub2e4. Lambda \uba3c\uc800 Lambda \ud568\uc218\ub97c \uc0dd\uc131\uc744 \ud560\ud150\ub370 \ubbf8\uad6d \ub3d9\ubd80(\ubc84\uc9c0\ub2c8\uc544 \ubd81\ubd80) us-east-1 \ub9ac\uc804\uc5d0\uc11c \uc0dd\uc131\ud574\uc904 \uac83\uc785\ub2c8\ub2e4. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"[AWS] Amazon SES\ub85c \uba54\uc77c \uc218\uc2e0 \ud6c4 csv \ud30c\uc77c \ucd94\ucd9c \ubc0f S3 \uc800\uc7a5","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[796,7,6,803,799,143,32,148,797,798,800,801,802],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts\/2110"}],"collection":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2110"}],"version-history":[{"count":11,"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts\/2110\/revisions"}],"predecessor-version":[{"id":2153,"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts\/2110\/revisions\/2153"}],"wp:attachment":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}