MinIO - 41. MinIO 하스켈 SDK API 참조

목록

MinIO Haskell SDK API Reference

MinIO 하스켈 SDK API 참조

Initialize MinIO Client object.

MinIO 클라이언트 객체를 초기화합니다.

MinIO - for public Play server

MinIO - 공개 Play 서버용

Copy

복사

AWS S3

Copy

복사

1. Connecting and running operations on the storage service

1. 스토리지 서비스 연결 및 작업 실행

The Haskell MinIO SDK provides high-level functionality to perform operations on a MinIO server or any AWS S3-like API compatible storage service.

Haskell MinIO SDK는 MinIO 서버 또는 AWS S3와 유사한 API 호환 스토리지 서비스에서 작업을 수행할 수 있는 고급 기능을 제공합니다.

The ConnectInfo type

ConnectInfo 유형

The ConnectInfo record-type contains connection information for a particular server.

ConnectInfo 레코드 유형에는 특정 서버에 대한 연결 정보가 포함됩니다.

It is recommended to construct the ConnectInfo value using one of the several smart constructors provided by the library, documented in the following subsections.

다음 하위 섹션에 설명된 라이브러리에서 제공하는 여러 스마트 생성자 중 하나를 사용하여 ConnectInfo 값을 생성하는 것이 좋습니다.

The library automatically discovers the region of a bucket by default. This is especially useful with AWS, where buckets may be in different regions.

라이브러리는 기본적으로 버킷 영역을 자동으로 검색합니다. 이는 버킷이 서로 다른 영역에 있을 수 있는 AWS에서 특히 유용합니다.

When performing an upload, download or other operation, the library requests the service for the location of a bucket and caches it for subsequent requests.

업로드, 다운로드 또는 기타 작업을 수행할 때 라이브러리는 서비스에 버킷 위치를 요청하고 후속 요청을 위해 이를 캐시합니다.

awsCI :: ConnectInfo

awsCI is a value that provides connection information for AWS S3. Credentials can be supplied by overriding a couple of fields like so:

awsCI는 AWS S3에 대한 연결 정보를 제공하는 값입니다. 다음과 같이 몇 가지 필드를 재정의하여 자격 증명을 제공할 수 있습니다.

Copy

복수

awsWithRegionCI :: Region -> Bool -> ConnectInfo

This constructor allows to specify the initial region and a Boolean to enable/disable the automatic region discovery behaviour.

이 생성자를 사용하면 초기 영역과 부울을 지정하여 자동 영역 검색 동작을 활성화/비활성화할 수 있습니다.

The parameters in the expression awsWithRegion region autoDiscover are:

awsWithRegion 영역 autoDiscover 표현식의 매개변수는 다음과 같습니다.

minioPlayCI :: ConnectInfo

This constructor provides connection and authentication information to connect to the public MinIO Play server at https://play.min.io/.

이 생성자는 https://play.min.io/에서 공개 MinIO Play 서버에 연결하기 위한 연결 및 인증 정보를 제공합니다.

minioCI :: Text -> Int -> Bool -> ConnectInfo

Use to connect to a MinIO server.

MinIO 서버에 연결하는 데 사용됩니다.

The parameters in the expression minioCI host port isSecure are:

minioCI 호스트 포트 isSecure 표현식의 매개변수는 다음과 같습니다.

The ConnectInfo fields and Default instance

ConnectInfo 필드 및 기본 인스턴스

The following table shows the fields in the ConnectInfo record-type:

다음 표는 ConnectInfo 레코드 유형의 필드를 보여줍니다.

The def value of type ConnectInfo has all the above default values.

ConnectInfo 유형의 def 값은 위의 모든 기본값을 갖습니다.

The Minio Monad

Minio 모나드

This monad provides the required environment to perform requests against a MinIO or other S3 API compatible server.

이 모나드는 MinIO 또는 기타 S3 API 호환 서버에 대한 요청을 수행하는 데 필요한 환경을 제공합니다.

It uses the connection information from the ConnectInfo value provided to it.

제공된 ConnectInfo 값의 연결 정보를 사용합니다.

It performs connection pooling, bucket location caching, error handling and resource clean-up actions.

연결 풀링, 버킷 위치 캐싱, 오류 처리 및 리소스 정리 작업을 수행합니다.

The runMinio function performs the provided action in the Minio monad and returns a IO (Either MinioErr a) value:

runMinio 함수는 Minio 모나드에서 제공된 작업을 수행하고 IO (Either MinioErr a) 값을 반환합니다:

Copy

복사

case result of

사례의 결과

Left e -> putStrLn $ "Failed operation with error: " ++ show e

왼쪽 e -> putStrLn $ "오류로 인해 작업 실패: " ++ e 표시

Right n -> putStrLn $ show n ++ " bucket(s) found."

오른쪽 n -> putStrLn $ show n ++ " 버킷을 찾았습니다."

The above performs a listBuckets operation and returns the number of buckets in the server.

위의 내용은 listBuckets 작업을 수행하고 서버의 버킷 수를 반환합니다.

If there were any errors, they will be returned as values of type MinioErr as a Left value.

오류가 있는 경우 MinioErr 유형의 값으로 Left 값으로 반환됩니다.

2. Bucket operations

2. 버킷 작업

listBuckets :: Minio [BucketInfo]

Lists buckets.

버킷을 나열합니다.

Return Value

반환 값

BucketInfo record type

BucketInfo 레코드 유형

makeBucket :: Bucket -> Maybe Region -> Minio ()

Create a new bucket. If the region is not specified, the region specified by ConnectInfo is used.

새 버킷을 만듭니다. 영역을 지정하지 않으면 ConnectInfo에서 지정한 영역이 사용됩니다.

Parameters

매개변수

In the expression makeBucket bucketName region the arguments are:

makeBucket bucketName 영역 표현식에서 인수는 다음과 같습니다.

Example

Copy

복사

case res of

사례의 나머지

Left err -> putStrLn $ "Failed to make bucket: " ++ (show res)

왼쪽 오류 -> putStrLn $ "버킷 만들기 실패: " ++ (res 표시)

Right _ -> putStrLn $ "makeBucket successful."

오른쪽 _ -> putStrLn $ "makeBucket 성공했습니다."

removeBucket :: Bucket -> Minio ()

Remove a bucket. The bucket must be empty or an error will be thrown.

버킷을 제거합니다. 버킷은 비어 있어야 합니다. 그렇지 않으면 오류가 발생합니다.

Parameters

매개변수

In the expression removeBucket bucketName the arguments are:

removeBucket bucketName 표현식에서 인수는 다음과 같습니다.

Example

Copy

복사

case res of

사례의 나머지

Left err -> putStrLn $ "Failed to remove bucket: " ++ (show res)

왼쪽 오류 -> putStrLn $ "버킷 제거 실패: " ++ (res 표시)

Right _ -> putStrLn $ "removeBucket successful."

오른쪽 _ -> putStrLn $ "removeBucket 성공했습니다."

listObjects :: Bucket -> Maybe Text -> Bool -> C.ConduitM () ObjectInfo Minio ()

List objects in the given bucket, implements version 2 of AWS S3 API.

지정된 버킷의 객체를 나열하고 AWS S3 API 버전 2를 구현합니다.

Parameters

매개변수

In the expression listObjects bucketName prefix recursive the arguments are:

listObjects bucketName 접두사 재귀 표현식에서 인수는 다음과 같습니다.

Return Value

반환 값

ObjectInfo record type

ObjectInfo 레코드 유형

Example

Copy

복사

-- | The following example uses MinIO play server at -- https://play.min.io. The endpoint and associated -- credentials are provided via the library constant,

-- 다음 예에서는 https://play.min.io의 MinIO 플레이 서버를 사용합니다. 엔드포인트 및 관련 자격 증명은 라이브러리 상수를 통해 제공됩니다.

-- Performs a recursive listing of all objects under bucket "test" -- on play.min.io.

-- play.min.io의 버킷 "test" 아래에 있는 모든 객체의 재귀적 나열을 수행합니다.

listObjectsV1 :: Bucket -> Maybe Text -> Bool -> C.ConduitM () ObjectInfo Minio ()

List objects in the given bucket, implements version 1 of AWS S3 API.

지정된 버킷의 객체를 나열하고 AWS S3 API 버전 1을 구현합니다.

This API is provided for legacy S3 compatible object storage endpoints.

이 API는 레거시 S3 호환 가능 객체 스토리지 엔드포인트에 제공됩니다.

Parameters

매개변수

In the expression listObjectsV1 bucketName prefix recursive the arguments are:

listObjectsV1 bucketName 접두사 재귀 표현식에서 인수는 다음과 같습니다.

Return Value

반환 값

ObjectInfo record type

ObjectInfo 레코드 유형

Example

Copy

복사

-- | The following example uses MinIO play server at -- https://play.min.io. The endpoint and associated -- credentials are provided via the library constant,

-- | 다음 예에서는 https://play.min.io의 MinIO 플레이 서버를 사용합니다. 엔드포인트 및 관련 자격 증명은 라이브러리 상수를 통해 제공됩니다.

-- Performs a recursive listing of all objects under bucket "test" -- on play.min.io.

-- play.min.io의 버킷 "test" 아래에 있는 모든 객체의 재귀적 나열을 수행합니다.

listIncompleteUploads :: Bucket -> Maybe Prefix -> Bool -> C.Producer Minio UploadInfo

List incompletely uploaded objects.

불완전하게 업로드된 객체를 나열합니다.

Parameters

매개변수

In the expression listIncompleteUploads bucketName prefix recursive the parameters are:

표현식 listIncompleteUploads bucketName 접두사 재귀 매개변수는 다음과 같습니다:

Return Value

반환 값

UploadInfo record type

UploadInfo 레코드 유형

Example

Copy

복사

-- | The following example uses MinIO play server at -- https://play.min.io. The endpoint and associated -- credentials are provided via the library constant,

-- | 다음 예에서는 https://play.min.io의 MinIO 플레이 서버를 사용합니다. 엔드포인트 및 관련 자격 증명은 라이브러리 상수를 통해 제공됩니다.

-- Performs a recursive listing of incomplete uploads under bucket "test" -- on a local MinIO server.

-- 로컬 MinIO 서버의 버킷 "test"에서 불완전한 업로드의 반복 목록을 수행합니다.

3. Object operations

3. 객체 작업

getObject :: Bucket -> Object -> GetObjectOptions -> Minio (C.ConduitM () ByteString Minio ())

Get an object from the S3 service, optionally object ranges can be provided as well.

S3 서비스에서 객체를 가져옵니다. 선택적으로 객체 범위도 제공할 수 있습니다.

Parameters

매개변수

In the expression getObject bucketName objectName opts the parameters are:

getObject bucketName objectName 표현식에서 매개변수는 다음과 같습니다.

GetObjectOptions record type

GetObjectOptions 레코드 유형

Return Value

반환 값

The return value can be incrementally read to process the contents of the object.

반환 값을 점진적으로 읽어 객체의 내용을 처리할 수 있습니다.

Example

Copy

복사

-- | The following example uses MinIO play server at -- https://play.min.io. The endpoint and associated -- credentials are provided via the library constant,

-- l 다음 예에서는 https://play.min.io의 MinIO 플레이 서버를 사용합니다. 엔드포인트 및 관련 자격 증명은 라이브러리 상수를 통해 제공됩니다.

case res of

사례의 나머지

Left e -> putStrLn $ "getObject failed." ++ (show e)

왼쪽 e -> putStrLn $ "getObject가 실패했습니다." ++ (e 표시)

Right _ -> putStrLn "getObject succeeded."

오른쪽 _ -> putStrLn "getObject가 성공했습니다."

putObject :: Bucket -> Object -> C.ConduitM () ByteString Minio () -> Maybe Int64 -> PutObjectOptions -> Minio ()

Uploads an object to a bucket in the service, from the given input byte stream of optionally supplied length. Optionally you can also specify additional metadata for the object.

선택적으로 제공된 길이의 지정된 입력 바이트 스트림에서 서비스의 버킷에 객체를 업로드합니다. 선택적으로 객체에 대한 추가 메타데이터를 지정할 수도 있습니다.

Parameters

매개변수

In the expression putObject bucketName objectName inputSrc the parameters are:

putObject bucketName objectName inputSrc 표현식에서 매개변수는 다음과 같습니다:

Example

Copy

복사

-- | The following example uses MinIO play server at -- https://play.min.io. The endpoint and associated -- credentials are provided via the library constant, Eg 1.

-- | 다음 예에서는 https://play.min.io의 MinIO 플레이 서버를 사용합니다. 엔드포인트 및 관련 자격 증명은 라이브러리 상수 (예: 1)를 통해 제공됩니다.

-- Upload a stream of repeating "a" using putObject with default options.

-- 기본 옵션과 함께 putObject를 사용하여 "a"를 반복하는 스트림을 업로드합니다.

case res of

사례의 나머지

Left e -> putStrLn $ "putObject failed." ++ show e

왼쪽 e -> putStrLn $ "putObject가 실패했습니다." ++ e 표시

Right () -> putStrLn "putObject succeeded."

오른쪽() -> putStrLn "putObject가 성공했습니다."

fGetObject :: Bucket -> Object -> FilePath -> GetObjectOptions -> Minio ()

Downloads an object from a bucket in the service, to the given file

서비스의 버킷에서 지정된 파일로 객체를 다운로드합니다.

Parameters

매개변수

In the expression fGetObject bucketName objectName inputFile the parameters are:

fGetObject bucketName objectName inputFile 표현식에서 매개변수는 다음과 같습니다.

GetObjectOptions record type

GetObjectOptions 레코드 유형

Copy

복사

-- | The following example uses MinIO play server at -- https://play.min.io. The endpoint and associated -- credentials are provided via the library constant,

-- | 다음 예에서는 https://play.min.io의 MinIO 플레이 서버를 사용합니다. 엔드포인트 및 관련 자격 증명은 라이브러리 상수를 통해 제공됩니다.

case res of

사례의 나머지

Left e -> putStrLn $ "fGetObject failed." ++ (show e)

왼쪽 e -> putStrLn $ "fGetObject가 실패했습니다." ++ (e 표시)

Right _ -> putStrLn "fGetObject succeeded."

오른쪽 _ -> putStrLn "fGetObject가 성공했습니다."

Uploads an object to a bucket in the service, from the given file

지정된 파일에서 서비스의 버킷에 객체를 업로드합니다.

Parameters

매개변수

In the expression fPutObject bucketName objectName inputFile the parameters are:

fPutObject bucketName objectName inputFile 표현식에서 매개변수는 다음과 같습니다.

Example

Copy

복사

case res of

사례의 나머지

Left e -> putStrLn $ "Failed to fPutObject " ++ show bucket ++ "/" ++ show object

왼쪽 e -> putStrLn $ "fPutObject에 실패했습니다. " ++ 버킷 표시 ++ "/" ++ 객체 표시

Right _ -> putStrLn "fPutObject was successful"

오른쪽 _ -> putStrLn "fPutObject가 성공했습니다"

Copies content of an object from the service to another

서비스에서 객체 콘텐츠를 다른 서비스로 복사합니다

Parameters

매개 변수

In the expression copyObject dstInfo srcInfo the parameters are:

copyObject dstInfo srcInfo 표현식에서 매개변수는 다음과 같습니다.

SourceInfo record type

SourceInfo 레코드 유형

Destination record type

대상 레코드 유형

Example

Copy

복사

case res of

사례의 나머지

Left e -> putStrLn $ "Failed to copyObject " ++ show bucket ++ show "/" ++ show object

왼쪽 e -> putStrLn $ "copyObject 실패" ++ 버킷 표시 ++ 표시 "/" ++ 객체 표시

Right _ -> putStrLn "copyObject was successful"

오른쪽 _ -> putStrLn "copyObject가 성공했습니다"

removeObject :: Bucket -> Object -> Minio () @K] [@E Removes an object from the service

서비스에서 객체를 제거합니다

Parameters

매개변수

In the expression removeObject bucketName objectName the parameters are:

removeObject bucketName objectName 표현식에서 매개변수는 다음과 같습니다:

Example

Copy

복사

case res of

사례의 나머지

Left e -> putStrLn $ "Failed to remove " ++ show bucket ++ "/" ++ show object

왼쪽 e -> putStrLn $ "제거 실패" ++ 버킷 표시 ++ "/" ++ 객체 표시

Right _ -> putStrLn "Removed object successfully"

오른쪽 _ -> putStrLn "객체를 성공적으로 제거했습니다."

removeIncompleteUpload :: Bucket -> Object -> Minio()

Removes an ongoing multipart upload of an object from the service

서비스에서 진행 중인 객체의 멀티파트 업로드를 제거합니다.

Parameters

매개변수

In the expression removeIncompleteUpload bucketName objectName the parameters are:

removeIncompleteUpload bucketName objectName 표현식에서 매개변수는 다음과 같습니다.

Example

Copy

복사

case res of

사례의 나머지

Left _ -> putStrLn $ "Failed to remove " ++ show bucket ++ "/" ++ show object

왼쪽 _ -> putStrLn $ "제거 실패" ++ 버킷 표시 ++ "/" ++ 객체 표시

Right _ -> putStrLn "Removed incomplete upload successfully"

오른쪽 _ -> putStrLn "미완료 업로드를 성공적으로 제거했습니다"

selectObjectContent :: Bucket -> Object -> SelectRequest -> Minio (ConduitT () EventMessage Minio ())

Removes an ongoing multipart upload of an object from the service

서비스에서 진행 중인 객체의 멀티파트 업로드를 제거합니다

Parameters

매개변수

In the expression selectObjectContent bucketName objectName selReq the parameters are:

selectObjectContent bucketName objectName selReq 표현식에서 매개변수는 다음과 같습니다.

SelectRequest record

SelectRequest 레코드

This record is created using selectRequest. Please refer to the Haddocks for further information.

이 레코드는 selectRequest를 사용하여 생성됩니다. 자세한 내용은 Haddocks를 참조하세요.

Return Value

반환 값

The return value can be used to read individual EventMessages in the response. Please refer to the Haddocks for further information.

반환 값은 응답에서 개별 EventMessage를 읽는 데 사용될 수 있습니다. 자세한 내용은 Haddocks를 참조하세요.

Example

Copy

복사

case res of

사례의 나머지

Left _ -> putStrLn "Failed!"

왼쪽 _ -> putStrLn "실패했습니다!"

Right _ -> putStrLn "Success!"

오른쪽 _ -> putStrLn "성공했습니다!"

bucketExists :: Bucket -> Minio Bool

Checks if a bucket exists.

버킷이 존재하는지 확인합니다.

Parameters

매개변수

In the expression bucketExists bucketName the parameters are:

bucketExists bucketName 표현식에서 매개변수는 다음과 같습니다.

4. Presigned operations

4. 사전 서명된 작업

presignedGetObjectUrl :: Bucket -> Object -> UrlExpiry -> Query -> [@K RequestHeaders -> Minio ByteString

Generate a URL with authentication signature to GET (download) an object.

객체를 GET (다운로드)하려면 인증 서명이 포함된 URL을 생성하세요.

All extra query parameters and headers passed here will be signed and are required when the generated URL is used.

여기에 전달된 모든 추가 쿼리 매개변수와 헤더는 서명되며 생성된 URL을 사용할 때 필요합니다.

Query parameters could be used to change the response headers sent by the server. Headers can be used to set Etag match conditions among others.

쿼리 매개변수는 서버가 보낸 응답 헤더를 변경하는 데 사용될 수 있습니다. 헤더는 특히 Etag 일치 조건을 설정하는 데 사용될 수 있습니다.

For a list of possible request parameters and headers, please refer to the GET object REST API AWS S3 documentation.

가능한 요청 매개변수 및 헤더 목록은 GET 객체 REST API AWS S3 설명서를 참조하세요.

Parameters

매개변수

In the expression presignedGetObjectUrl bucketName objectName expiry queryParams headers the parameters are:

presignedGetObjectUrl bucketName objectName 만료 queryParams 헤더 표현식에서 매개변수는 다음과 같습니다.

Return Value

반환 값

Returns the generated URL - it will include authentication information.

생성된 URL을 반환합니다. 여기에는 인증 정보가 포함됩니다.

Example

Copy

복사

-- Set a 7 day expiry for the URL

-- URL 만료일을 7일로 설정합니다

-- Print the URL on success.

-- 성공 시 URL을 인쇄합니다.

(("Failed to generate URL: " ++) . show)

(("URL 생성 실패: " ++) . 표시)

presignedPutObjectUrl :: Bucket -> Object -> UrlExpiry -> RequestHeaders -> Minio ByteString

Generate a URL with authentication signature to PUT (upload) an object.

객체를 PUT (업로드)하기 위해 인증 서명이 포함된 URL을 생성합니다.

Any extra headers if passed, are signed, and so they are required when the URL is used to upload data.

전달된 추가 헤더는 서명되므로 URL을 사용하여 데이터를 업로드할 때 필요합니다.

This could be used, for example, to set user-metadata on the object.

예를 들어, 객체에 사용자 메타데이터를 설정하는 데 사용할 수 있습니다.

For a list of possible headers to pass, please refer to the PUT object REST API AWS S3 documentation.

전달할 수 있는 헤더 목록은 PUT 객체 REST API AWS S3 설명서를 참조하세요.

Parameters

매개변수

In the expression presignedPutObjectUrl bucketName objectName expiry headers the parameters are:

presignedPutObjectUrl bucketName objectName 만료 헤더 표현식에서 매개변수는 다음과 같습니다:

Return Value

반환 값

Returns the generated URL - it will include authentication information.

생성된 URL을 반환합니다. 여기에는 인증 정보가 포함됩니다.

Example

Copy

복사

-- Set a 7 day expiry for the URL

-- URL 만료일을 7일로 설정합니다

-- Print the URL on success.

-- 성공 시 URL을 인쇄합니다.

(("Failed to generate URL: " ++) . show)

(("URL 생성 실패: " ++) . 표시)

presignedPostPolicy :: PostPolicy -> Minio (ByteString, HashMap Text ByteString)

Generate a presigned URL and POST policy to upload files via a POST request.

POST 요청을 통해 파일을 업로드하려면 사전 서명된 URL과 POST 정책을 생성하세요.

This is intended for browser uploads and generates form data that should be submitted in the request.

이는 브라우저 업로드를 위한 것이며 요청에 제출해야 하는 양식 데이터를 생성합니다.

The PostPolicy argument is created using the newPostPolicy function:

PostPolicy 인수는 newPostPolicy 함수를 사용하여 생성됩니다:

newPostPolicy :: UTCTime -> [PostPolicyCondition] -> Either PostPolicyError PostPolicy

In the expression newPostPolicy expirationTime conditions the parameters are:

newPostPolicy expirationTime 조건 표현식에서 매개변수는 다음과 같습니다.

The policy conditions are created using various helper functions - please refer to the Haddocks for details.

정책 조건은 다양한 도우미 기능을 사용하여 생성됩니다. 자세한 내용은 Haddocks를 참조하세요.

Since conditions are validated by newPostPolicy it returns an Either value.

조건은 newPostPolicy에 의해 검증되므로 둘 중 하나 값을 반환합니다.

Return Value

반환 값

presignedPostPolicy returns a 2-tuple - the generated URL and a map containing the form-data that should be submitted with the request.

presignedPostPolicy는 생성된 URL과 요청과 함께 제출해야 하는 양식 데이터가 포함된 맵인 2개의 튜플을 반환합니다.

Example

Copy

복사

-- set an expiration time of 10 days

-- 만료 시간을 10일로 설정합니다

expireTime = Time.addUTCTime (3600 * 24 * 10) now

만료 시간 = Time.addUTCTime (3600 * 24 * 10) 현재

-- create a policy with expiration time and conditions - since the -- conditions are validated, newPostPolicy returns an Either value

-- 만료 시간 및 조건이 포함된 정책 생성 - 조건이 검증되었으므로 newPostPolicy는 둘 중 하나 값을 반환합니다

[ -- set the object name condition

[ -- 객체 이름 조건을 설정합니다

-- set the bucket name condition

-- 버킷 이름 조건을 설정합니다

-- set the size range of object as 1B to 10MiB

-- 객체의 크기 범위를 1B~10MiB로 설정합니다

-- set content type as jpg image

-- 콘텐츠 유형을 jpg 이미지로 설정

-- on success set the server response code to 200

-- 성공 시 서버 응답 코드를 200으로 설정합니다

case policyE of

사례 정책E

Left err -> putStrLn $ show err

왼쪽 오류 -> putStrLn $ 오류 표시

Right policy -> do

오른쪽 정책 -> 수행

-- a curl command is output to demonstrate using the generated -- URL and form-data

-- 생성된 URL 및 양식 데이터 사용을 보여주기 위해 curl 명령이 출력됩니다

case res of

사례의 나머지

Left e -> putStrLn $ "post-policy error: " ++ (show e)

왼쪽 e -> putStrLn $ "사후 정책 오류: " ++ (e 표시)

Right cmd -> do

오른쪽 cmd -> 수행

putStrLn $ "Put a photo at /tmp/photo.jpg and run command:\n"

putStrLn $ "/tmp/photo.jpg에 사진을 넣고 다음 명령을 실행하세요:\n"

-- 생성된 curl 명령을 인쇄합니다

Char8.putStrLn cmd